OpenCV靜心修煉總結篇4——影象操作
阿新 • • 發佈:2018-11-17
讀寫單通道畫素,修改單通道畫素
參考程式碼:
// 讀取單通道畫素 ,修改 Mat dst; cvtColor(src,dst,CV_BGR2GRAY); imshow("gray",dst); int width = dst.cols; int height = dst.rows; for(int col=0;col<width;col++) for(int row=0;row<height;row++) { int gray=dst.at<uchar>(row,col); dst.at<uchar>(row,col) = 255-gray; } imshow("grayto",dst);
讀寫多通道畫素,修改單通道畫素
參考程式碼:
Mat dst; dst.create(src.size(),src.type()); int width = src.cols; int height = src.rows; int nc = src.channels(); for(int col=0;col<width;col++) for(int row=0;row<height;row++) { if(nc==1) { int gray=src.at<uchar>(row,col); src.at<uchar>(row,col) = 255-gray; } else if(nc==3) { int b =src.at<Vec3b>(row,col)[0]; int g =src.at<Vec3b>(row,col)[1]; int r =src.at<Vec3b>(row,col)[2]; dst.at<Vec3b>(row,col)[0]=255-b; dst.at<Vec3b>(row,col)[1]=255-g; dst.at<Vec3b>(row,col)[2]=255-r; } } imshow("grayto",dst);