Get the App
SLTechnology News&Howtos  ›  Development  › 

The method of Pixel Operation in opencv3/C++ Image

Shulou Source: shulou.com Published: 2022-05-31 21:53:45 09月17日 Update

这篇文章主要介绍了opencv3/C++图像像素操作的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇opencv3/C++图像像素操作的方法文章都会有所收获,下面我们一起来看看吧。

RGB图像转灰度图

RGB图像转换为灰度图时通常使用:

进行转换,以下尝试通过其他对图像像素操作的方式将RGB图像转换为灰度图像。

#include#includeusing namespace cv;int main(){ //像素操作 Mat src,dst; src = imread("E:/image/image/daibola.jpg"); if(src.empty()) { printf("can not load image \n"); return -1; } namedWindow("input"); imshow("input",src); dst.create(src.size(), src.type()); for(int row = 0; row < src.rows; row++) { for(int col = 0; col < src.cols; col++) { int b = src.at(row, col)[0]; int g = src.at(row, col)[1]; int r = src.at(row, col)[2]; dst.at(row, col)[0] = max(r,max(g,b)); dst.at(row, col)[1] = max(r,max(g,b)); dst.at(row, col)[2] = max(r,max(g,b)); } } namedWindow("output"); imshow("output",dst); waitKey();}

同理使用min(r,min(g,b))可以看到由于选择了较小的灰度值图像会明显变暗:

图像线性增强

通过对图像像素操作(线性变换),实现图像的线性增强。

#include#includeusing namespace cv;int main(){ Mat src1, dst; src1 = imread("E:/image/image/im1.jpg"); if(src1.empty()) { printf("can not load im1 \n"); return -1; } double alpha = 1.2, beta = 50; dst = Mat::zeros(src1.size(), src1.type()); for(int row = 0; row < src1.rows; row++) { for(int col = 0; col < src1.cols; col++) { if(src1.channels() == 3) { int b = src1.at(row, col)[0]; int g = src1.at(row, col)[1]; int r = src1.at(row, col)[2]; dst.at(row, col)[0] = saturate_cast(b*alpha + beta); dst.at(row, col)[1] = saturate_cast(g*alpha + beta); dst.at(row, col)[2] = saturate_cast(r*alpha + beta); } else if (src1.channels() == 1) { float v = src1.at(row, col); dst.at(row, col) = saturate_cast(v*alpha + beta); } } } namedWindow("output",CV_WINDOW_AUTOSIZE); imshow("output", dst); waitKey(); return 0;}

掩膜操作调整图像对比度

使用一个3×3掩模增强图像对比度:

#include#includeusing namespace cv;int main(){ Mat src, dst; src = imread("E:/image/image/daibola.jpg"); CV_Assert(src.depth() == CV_8U); if(!src.data) { printf("can not load image \n"); return -1; } src.copyTo(dst); for(int row = 1; row

Tags: Image pixel method grayscale knowledge linearity content contrast article interpolation selection obvious value parameter mask simple operation article way easy to understand more Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Docker OPPO Reno Shulou Information Xiaomi Microsoft