我如何使用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 );

最佳答案

由于您知道左上角和右下角矩形角的坐标,因此:

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

您可以绘制一个黑色填充的矩形:
rectangle(img, Rect(tl, br), Scalar(0,0,0), CV_FILLED);

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

c++ - 使用cvGet2D cvSet2D函数修改图像像素-LMLPHP

码:
#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函数。

关于c++ - 使用cvGet2D cvSet2D函数修改图像像素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32916100/

10-12 01:34
查看更多