如何使用cvGet2D
和cvSet2D
来获得此结果:
代码:
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 );
答案 0 :(得分:1)
因为你知道左上角和右下角的角落坐标:
Point tl(250, 250);
Point br(350, 280);
您可以绘制黑色填充矩形:
rectangle(img, Rect(tl, br), Scalar(0,0,0), CV_FILLED);
结果(请注意,我的图片与您的图片大小不同,因此结果会略有不同):
代码:
#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;
}
注意强>
cvSetXD
和cvGetXD
是旧式C语法。您永远不应该混合使用过时的C语法和C ++语法。如果您想访问Mat
中的像素值,则应使用at函数。