OpenCV——修改图像像素(随心所欲)

这一节将讲述OpenCV——修改图像像素,根据自己需要添加特定的像素部分

原图如下,我们就是先在这个视频流上添加一条直线段(有一定宽度的)

 

OpenCV——修改图像像素(随心所欲)_第1张图片

 

现在我们想添加一条,135行-455行,列350--360的直线段

 

#include
using namespace cv;

int main()
{
	VideoCapture capture(0);
	
	while (1)
	{
		Mat frame;
		capture >> frame;
		
	    //修改像素,添加直线//////////////////////
		for (int i = 135; i < 455; ++i)//绘制行数
		{
			for (int j = 350; j < 360; ++j)//绘制列数
			{
				Vec3b pixel;
				pixel[0] = 0;
				pixel[1] = 0;
				pixel[2] = 255;
				frame.at(i, j) = pixel;
			}
		}
		/////////////////////////////////////
		namedWindow("视频图像");
		imshow("视频图像", frame);
	
		waitKey(30);
	}
	return 0;

}

 

视频截图如下

 

OpenCV——修改图像像素(随心所欲)_第2张图片

 

现在主要讲一下修改像素部分,代码段如下

 

//修改像素,添加直线//////////////////////
		for (int i = 135; i < 455; ++i)//绘制行数
		{
			for (int j = 350; j < 360; ++j)//绘制列数
			{
				Vec3b pixel;
				pixel[0] = 0;     //B像素
				pixel[1] = 0;     //G像素
				pixel[2] = 255;   //R像素
				frame.at(i, j) = pixel;  //像素修改,讲直线段部分绘制在frame图像上
			}
		}


基本修改像素部分也就这么些。

 

下面重磅来袭,讲前面两个博客内容整个在一起。。

现在我们要在原图上-----------ROI区域截取-----------绘制T字标记

其中T字标准如下图(数字是像素范围,恕我懒了,应该也可以看懂)

 

OpenCV——修改图像像素(随心所欲)_第3张图片

 

上代码(可直接运行)

 

#include
using namespace cv;

int main()
{
	VideoCapture capture(0);
	
	while (1)
	{
		Mat frame;
		capture >> frame;
		Mat roi = frame(Range(120, 476), Range(180, 476));
	    //修改像素,添加直线//////////////////////
		for (int i = 155; i < 275; ++i)//绘制行数
		{
			for (int j = 144; j < 150; ++j)//绘制列数
			{
				Vec3b pixel;
				pixel[0] = 0;     //B像素
				pixel[1] = 0;     //G像素
				pixel[2] = 255;   //R像素
				roi.at(i, j) = pixel;  //像素修改,讲直线段部分绘制在frame图像上
			}
		}

		for (int i = 150; i < 155; ++i)//绘制行数
		{
			for (int j = 77; j < 217; ++j)//绘制列数
			{
				Vec3b pixel;
				pixel[0] = 255;
				pixel[1] = 0;
				pixel[2] = 0;
				roi.at(i, j) = pixel;
			}
		}
		/////////////////////////////////////
		namedWindow("视频图像");
		imshow("视频图像", roi);
	
		waitKey(30);
	}
	return 0;

}


视频截图如下

 

OpenCV——修改图像像素(随心所欲)_第4张图片

 

 

下面,再随心所欲一下,在任意两点Point pt1(x1,y1);    Point pt2(x2, y2);之间绘制直线

代码段如下

 

#include
using namespace cv;

int main()
{
	VideoCapture capture(0);
	
	while (1)
	{
		Mat frame;
		capture >> frame;
	    //修改像素,添加直线//////////////////////
		Point pt1(30,80);
		Point pt2(450, 480);
		line(frame, pt1, pt2, Scalar(0, 0, 255), 1, CV_AA);
		/////////////////////////////////////
		namedWindow("视频图像");
		imshow("视频图像", frame);
	
		waitKey(30);
	}
	return 0;

}

 

1.视频截图(宽度为1)

OpenCV——修改图像像素(随心所欲)_第5张图片

 

 

2.视频截图(宽度为3)

OpenCV——修改图像像素(随心所欲)_第6张图片

 

两点连线的代码段

如下

 

        //修改像素,添加直线
		Point pt1(30,80);
		Point pt2(450, 480);
		line(frame, pt1, pt2, Scalar(0, 0, 255), 1, CV_AA); 
         //line(frame, pt1, pt2, Scalar(0, 0, 255), 3, CV_AA);
        line(frame, pt1, pt2, Scalar(0, 0, 255), 3, CV_AA);
        //line(frame, pt1, pt2, Scalar(0, 0, 255), 10 CV_AA);
		/////////////////////////////////////
        line(frame, pt1, pt2, Scalar(0, 0, 255), 10 CV_AA);
 

3.视频截图(宽度为10)


OK,结束

OpenCV——修改图像像素(随心所欲)_第7张图片

 

你可能感兴趣的:(OpenCV图像处理)