OpenCV如何修改Mat中某像素(某通道的数值)

有个很好玩的函数

_Tp& Mat::at(int i0, int i1)

这个函数提供了访问像素点或位置的函数

举个例子:

如下代码:

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/imgproc/imgproc_c.h>

#include <iostream>
#include <vector>
using namespace std;
using namespace cv;

void main(){

	Mat matSrc=imread("1.png",IMREAD_UNCHANGED);
	Mat matHsv,matInRange;
	cvtColor(matSrc,matHsv,COLOR_RGB2HSV);
	inRange(matHsv,Scalar(35,43,46),Scalar(77,255,255),matInRange);

	
	matInRange.at<uchar>(0,0)=255;


	matSrc.at<uchar>(0,0)=255;
	matSrc.at<uchar>(0,1)=255;
	matSrc.at<uchar>(0,3)=255;
	matSrc.at<uchar>(0,4)=255;


	getchar();
}

matInRange是单通道的图,当他把(0,0)和(0,2)赋值为255时:

运行截图如下:

 

matSrc调用at进行修改后,运行截图如下:

是不是很有意思,并且是不是发现可以干很多事!!!!!

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页