在OpenCV C ++中将图像区域设置为零的最佳方法?

时间:2014-07-15 09:11:30

标签: c++ opencv

我想问一下哪种方法可以将灰度Mat图像的区域设置为零(或任何其他常量值)。

我应该创建一个零图像然后使用copyTo()还是有更好的方法?

3 个答案:

答案 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);