代码
#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
Mat src = imread("A:\\专用\\TestForTheCV\\代替女友出境.jpg");
imshow("图片", src);
Mat gray_src;
cvtColor(src, gray_src, CV_BGR2GRAY);
imshow("灰度化", gray_src);
int height = src.rows;
int weight = src.cols;
for (int row = 0; row < height; row++) {
for (int col = 0; col < weight; col++) {
int gray = gray_src.at<uchar>(row, col);
gray_src.at<uchar>(row, col) = 255 - gray;
}
}
imshow("invert", gray_src);
int nc = src.channels();
for (int row = 0; row < height; row++) {
for (int col = 0; col < weight; col++) {
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];
src.at<Vec3b>(row, col)[0]=255-b;
src.at<Vec3b>(row, col)[1]=255-g;
src.at<Vec3b>(row, col)[2]=255-r;
}
}
}
imshow("原图反色", src);
cvtColor(src, src, CV_BGR2GRAY);
bitwise_not(src, src);
imshow("原图反色再反色", src);
src = imread("A:\\专用\\TestForTheCV\\代替女友出境.jpg");
for (int row = 0; row < height; row++) {
for (int col = 0; col < weight; col++) {
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];
src.at<Vec3b>(row, col)[0] =r;
src.at<Vec3b>(row, col)[1] =b;
src.at<Vec3b>(row, col)[2] =g;
}
}
}
imshow("修改通道", src);
waitKey(0);
return 0;
}
运行结果
