我想问一下哪种方法可以将灰度Mat图像的区域设置为零(或任何其他常量值)。
我应该创建一个零图像然后使用copyTo()
还是有更好的方法?
答案 0 :(得分:11)
我会使用setTo()
,例如:
// load an image
cv::Mat pImage = cv::imread("someimage.jpg", CV_LOAD_IMAGE_COLOR);
// select a region of interest
cv::Mat pRoi = pImage(cv::Rect(10, 10, 20, 20));
// set roi to some rgb colour
pRoi.setTo(cv::Scalar(blue, green, red));
答案 1 :(得分:4)
我们说我们在白色画布上画一个黑色矩形:
cv::Mat img(100,100,CV_8U,cv::Scalar(255));
img(cv::Rect(15,15,20,40))=0;
cv::imshow("Img",img);
cv::waitKey();
答案 2 :(得分:0)
尝试以下代码
Mat image;
image = imread("images/lena.jpg");
int x=100;int y=100; int w=100; int h=100;
Rect roi = Rect(x,y,w,h);
image(roi).setTo(cv::Scalar(0,0,0));
imshow("display",image);