C++:cv::Mat的列数与行数属性
在OpenCV中,cv::Mat
类是一个非常核心的数据结构,用于存储图像或数值数据。这个类提供了丰富的功能来操作这些数据,包括访问、修改和转换数据等。cv::Mat
类的 cols
和 rows
属性分别代表矩阵(或图像)的列数和行数。
-
cols
:这个属性代表矩阵或图像的列数。对于一个二维矩阵或图像而言,列数是指水平方向上元素的数量。在图像处理中,这通常对应于图像的宽度(width)。 -
rows
:这个属性代表矩阵或图像的行数。同样地,对于一个二维矩阵或图像而言,行数是指垂直方向上元素的数量。在图像处理中,这通常对应于图像的高度(height)。
这两个属性是 cv::Mat
类的一部分,允许你轻松地查询和操作矩阵或图像的尺寸。例如,你可以使用 cv::Mat::rows
和 cv::Mat::cols
成员函数(或者更简单地,直接访问 rows
和 cols
属性,如果它们在你的OpenCV版本中是公开的)来获取图像的尺寸,或者使用这些信息来遍历图像的像素。
示例代码:
#include <opencv2/opencv.hpp>
#include <iostream>
int main() {
// 创建一个 480x640 的空白色图像
cv::Mat img = cv::Mat::zeros(480, 640, CV_8UC3);
// 访问并打印图像的尺寸
std::cout << "图像的行数(高度): " << img.rows << std::endl;
std::cout << "图像的列数(宽度): " << img.cols << std::endl;
// 遍历图像的每个像素(这里只是示例,实际上并未对像素值进行修改)
for (int i = 0; i < img.rows; ++i) {
for (int j = 0; j < img.cols; ++j) {
// 这里可以访问或修改像素值,但在这个例子中我们只是遍历它们
// 例如:img.at<cv::Vec3b>(i, j) = cv::Vec3b(255, 0, 0); // 将所有像素设置为红色
}
}
// 显示图像(如果进行了修改的话)
// cv::imshow("Image", img);
// cv::waitKey(0);
return 0;
}
请注意,在上面的示例中,我提到了使用 img.at<cv::Vec3b>(i, j)
来访问和修改像素值。这是因为 img
是一个三通道(彩色)图像,其每个像素都由一个 cv::Vec3b
类型的向量表示,其中包含了该像素的蓝色、绿色和红色分量。对于灰度图像,你会使用 uchar
类型而不是 cv::Vec3b
来访问和修改像素值。
原文地址:https://blog.csdn.net/Ethan_Rich/article/details/140259634
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!