opencv__图像取反

#include
#include
#include
using namespace std;
using namespace cv;
int main(int argc, char** argv)
   {
	   // read image
	   Mat src = imread("C:/Users/qxq/Pictures/image/1.jpg");

	   if (src.empty())
	   {
		   printf("Could not load image...");
		   return -1;
	   }
	   
	   Mat dst;
	   dst.create(src.size(), src.type());
	   int height = src.rows;
	   int width = src.cols;
	   int nc = src.channels();
	 
	   for (int row = 0; row < height; row++)
	   {
		   for (int col = 0; col < width; col++)
		   {
			   if (nc == 1)//单通道
			   { 
				   //获取每个的像素值
				   int gray = dst.at(row, col);
				   //改变像素值
				   dst.at(row, col) = 255 - gray;
			   }
			   else if(nc==3)//彩色图像
			   {
				   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] = 255 - b;
				   dst.at(row, col)[1] = 255 - g;
				   dst.at(row, col)[2] = 255 - r;
			   }
			  
		   }
	   }
	   //直接调用API,与上面的操作相同。。。
	   bitwise_not(src, dst);//将图像取反(反差图片),逐个像素处理	*/ 

	   namedWindow("input", CV_WINDOW_AUTOSIZE);
	   imshow("input",src);

	   waitKey(0);
	   return 0;
   }

 

你可能感兴趣的:(opencv)