OpenCV基础课程笔记05图像操作

代码

#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;

}

运行结果

在这里插入图片描述

posted @ 2020-08-26 22:01  爱和九九  阅读(26)  评论(0)    收藏  举报