对RGB三个通道进行操作示例
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace std;
using namespace cv;
int main(int, char *argv[])
{
Mat OriginalImg;
OriginalImg = imread("dst_pic51.jpg", IMREAD_COLOR);
if (OriginalImg.empty())
{
cout << "错误!读取图像失败\n";
return -1;
}
cout << "Width:" << OriginalImg.rows << "\tHeight:" << OriginalImg.cols << endl;
unsigned char pixelB, pixelG, pixelR;
unsigned char DifMax = 100;
Mat BinRGBImg = OriginalImg.clone();
int i = 0, j = 0;
for (i = 0; i < OriginalImg.rows; i++)
{
for (j = 0; j < OriginalImg.cols; j++)
{
pixelB = OriginalImg.at<Vec3b>(i, j)[0];
pixelG = OriginalImg.at<Vec3b>(i, j)[1];
pixelR = OriginalImg.at<Vec3b>(i, j)[2];
if (pixelB-130>0)
{
BinRGBImg.at<Vec3b>(i, j)[0] = 255;
BinRGBImg.at<Vec3b>(i, j)[1] = 255;
BinRGBImg.at<Vec3b>(i, j)[2] = 255;
}
else
{
BinRGBImg.at<Vec3b>(i, j)[0] = 0;
BinRGBImg.at<Vec3b>(i, j)[1] = 0;
BinRGBImg.at<Vec3b>(i, j)[2] = 0;
}
}
}
imshow("基于颜色信息二值化", BinRGBImg);
imwrite("BlueI.jpg", BinRGBImg);
waitKey();
return 0;
}