使用cvGet2D cvSet2D函数修改图像像素

时间:2015-10-02 21:27:39

标签: c++ opencv

如何使用cvGet2DcvSet2D来获得此结果:

代码:

std::string path = "C:\\image.jpg";
cv::Mat img = cv::imread (path);
CvScalar scal = cvGet2D(m, 0, 2);
cvSet2D(m, 0, 2, new_value);*/
cv::imshow( "Result window", img );

1 个答案:

答案 0 :(得分:1)

因为你知道左上角和右下角的角落坐标:

Point tl(250, 250);
Point br(350, 280);

您可以绘制黑色填充矩形:

rectangle(img, Rect(tl, br), Scalar(0,0,0), CV_FILLED);

结果(请注意,我的图片与您的图片大小不同,因此结果会略有不同):

enter image description here

代码:

#include <opencv2\opencv.hpp>
using namespace cv;

int main()
{
    // Load image
    Mat3b img = imread("path_to_image");

    // Set top-left and bottom-right rectangle points
    Point tl(250, 250);
    Point br(350, 280);

    // Draw a filled rect
    rectangle(img, Rect(tl, br), Scalar(0,0,0), CV_FILLED);

    // Show result
    imshow("Result", img);
    waitKey();

    return 0;
}

注意

cvSetXDcvGetXD是旧式C语法。您永远不应该混合使用过时的C语法和C ++语法。如果您想访问Mat中的像素值,则应使用at函数。