C++ OpenCV 图像像素操作详解:读取、修改、转换、统计
C++ 和 OpenCV 中的图像像素操作包括读取像素值、修改像素值、像素值转换、像素值统计等。
- 读取像素值:
读取图像中某个像素的值可以使用 at() 函数,该函数返回一个指定位置像素的值。
示例代码:
cv::Mat img = cv::imread('image.jpg');
int x = 100, y = 200;
cv::Vec3b pixel = img.at<cv::Vec3b>(y, x);
std::cout << 'Pixel value at (' << x << ', ' << y << '): ' << pixel << std::endl;
- 修改像素值:
修改图像中某个像素的值可以使用 at() 函数,该函数返回一个指定位置像素的引用,可以通过修改该引用来修改像素值。
示例代码:
cv::Mat img = cv::imread('image.jpg');
int x = 100, y = 200;
cv::Vec3b& pixel = img.at<cv::Vec3b>(y, x);
pixel[0] = 255; // 修改像素值
pixel[1] = 0;
pixel[2] = 0;
cv::imwrite('modified_image.jpg', img); // 保存修改后的图像
- 像素值转换:
像素值转换是指将一个像素值转换为另一种类型的像素值。OpenCV 提供了一些函数来执行像素值转换,如 cvtColor() 函数。
示例代码:
cv::Mat img = cv::imread('image.jpg');
cv::Mat gray_img;
cv::cvtColor(img, gray_img, cv::COLOR_BGR2GRAY); // 将彩色图像转换为灰度图像
cv::imwrite('gray_image.jpg', gray_img); // 保存灰度图像
- 像素值统计:
像素值统计是指对图像中的像素值进行统计分析,如计算像素值的均值、方差、最大值、最小值等。OpenCV 提供了一些函数来执行像素值统计,如 mean() 函数、minMaxLoc() 函数等。
示例代码:
cv::Mat img = cv::imread('image.jpg');
cv::Scalar mean_val = cv::mean(img); // 计算像素值的均值
std::cout << 'Mean value: ' << mean_val << std::endl;
double min_val, max_val;
cv::Point min_loc, max_loc;
cv::minMaxLoc(img, &min_val, &max_val, &min_loc, &max_loc); // 计算像素值的最大值和最小值
std::cout << 'Min value: ' << min_val << ', location: ' << min_loc << std::endl;
std::cout << 'Max value: ' << max_val << ', location: ' << max_loc << std::endl;
以上是常见的像素操作,涉及到的原理公式较多,可以在 OpenCV 的官方文档中查找相关资料。
原文地址: https://www.cveoy.top/t/topic/j8yE 著作权归作者所有。请勿转载和采集!