cv::Mat::zeros(1080, 1000, CV_8UC3)
时间: 2024-01-08 22:02:30 浏览: 242
`cv::Mat::zeros` 是 OpenCV 库中的一个函数,用于创建一个指定大小和类型的全零矩阵。该函数的参数包括矩阵的行数、列数和数据类型。在这里,`cv::Mat::zeros(1080, 1000, CV_8UC3)` 创建了一个 1080 行、1000 列、每个元素占 3 字节的全零矩阵,其中 `CV_8UC3` 表示每个元素的数据类型为 8 位无符号整数,且每个元素由 3 个通道组成,分别表示 BGR 颜色通道。
在图像处理中,使用 `cv::Mat::zeros` 创建一个指定大小的全零矩阵是一个常见的操作。这个全零矩阵可以作为目标图像,用于存储图像处理的结果。例如,可以使用以下代码创建一个 640x480 的全零图像,并将其保存到文件中:
```c++
#include <opencv2/opencv.hpp>
int main() {
cv::Mat image = cv::Mat::zeros(480, 640, CV_8UC3);
cv::imwrite("result.jpg", image);
return 0;
}
```
在这里,首先使用 `cv::Mat::zeros` 创建一个 480 行、640 列、每个元素占 3 字节的全零矩阵 `image`。然后使用 `cv::imwrite` 函数将 `image` 保存为一个 JPEG 格式的文件 `result.jpg`。这个文件的内容应该是一个全黑的图像。
相关问题
cv::Mat mat = cv::Mat::zeros(3, 3, CV_32FC2);
这行代码创建了一个大小为 3x3,数据类型为 CV_32FC2 的全零矩阵,其中:
- CV_32F 表示 OpenCV 中的 32 位浮点数数据类型;
- C2 表示通道数为 2,即该矩阵是一个二通道矩阵,每个像素点由两个 32 位浮点数组成。
因此,这个矩阵是一个 3x3 的二通道矩阵,每个元素都是一个由两个 32 位浮点数构成的数组。这个数据类型通常用于表示复数图像,如实部和虚部分别为两个通道的傅里叶变换结果。
std::vector<cv::Mat> channels; cv::split(display_img, channels); // 将 RGB 格式的图像拆分为三个通道 cv::Mat y_image = channels[0]; // 提取 Y 通道 imwrite("Y.bmp", y_image);//保存图片 double meanY = cv::mean(y_image)[0]; cv::Mat diff_mat = y_image - cv::Scalar(meanY); //设置亮度阈值 string HotSpec; this->HelperGetProp("BrightSpec", HotSpec); float HotSpecValue = atof(HotSpec.c_str()); //标记坏点 cv::Mat bad_points = cv::Mat::zeros(y_image.size(), CV_8UC1); int k = 0; for (int i = 0; i < y_image.rows; i++) { for (int j = 0; j < y_image.cols; j++) { if (abs(diff_mat.at<uchar>(i, j)) > HotSpecValue) { bad_points.at<uchar>(i, j) = 255; k += 1; bad_pointsGroup.emplace_back(j, i); AddNGLog((boost::format("hotpixel X:%d,y:%d") % j %i).str()); } } } string SingleHotpixelNum; this->HelperGetProp("BrightSpec", SingleHotpixelNum); int SingleHotpixelValue = atoi(HotSpec.c_str()); if (k > SingleHotpixelValue) { AddNGLog("Bright NUM > threshould"); return false; }
这段代码是针对 RGB 格式图像中亮度异常点的检测和标记。首先,将 RGB 格式的图像拆分为三个通道,然后提取其中的 Y 通道。接着,计算 Y 通道的平均值,并将其减去该平均值,得到差分图像 diff_mat。在这之后,根据预设的亮度阈值 HotSpecValue,将差分图像中绝对值超过该阈值的像素点标记为坏点,即将 bad_points 矩阵中的对应像素设为 255。同时,还记录了坏点的位置信息,存入 bad_pointsGroup 容器中。最后,如果坏点的数量超过预设的阈值 SingleHotpixelValue,则认为图像存在过多的亮度异常点,函数返回 false,否则返回 true。
阅读全文