opencv菜鸟一枚,若有理解不对的地方请多多指教

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
	Mat src, dst;
	src = imread("F:/项目学习/车辆识别/opencv3.1教程/代码/lena.jpg");
	namedWindow("原图", CV_WINDOW_AUTOSIZE);
	imshow("原图", src);
	cvtColor(src, dst, CV_BGR2GRAY);
	namedWindow("灰度图", CV_WINDOW_AUTOSIZE);
	imshow("灰度图", dst);
	//原图画线
	for(int i = 0;i<src.rows;i++)
		for (int j = 0; j < src.cols; j++) {
			uchar* p = src.ptr<uchar>(i, j);
			//原图是彩色图,操作三个通道修改颜色
			if (i == j) {
				p[0] = 0;
				p[1] = 255;
				p[2] = 255;
			}
		}
	namedWindow("原图画线", CV_WINDOW_AUTOSIZE);
	imshow("原图画线", src);

	//灰度图画线
	for (int i = 0; i < dst.rows; i++)
		for (int j = 0; j < dst.cols; j++) {
			uchar* p = dst.ptr<uchar>(i, j);
			//灰度图是单通道的,只需要操作一个通道即可
			if (i == j) {
				p[0] = 255;
			}
		}
	namedWindow("灰度图画线", CV_WINDOW_AUTOSIZE);
	imshow("灰度图画线", dst);
	waitKey(0);
	return 0;
}

使用指针操作像素,在图像上画线

 参考链接:https://blog.csdn.net/kksc1099054857/article/details/82684678

 

相关文章: