我如何使用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 );
最佳答案
由于您知道左上角和右下角矩形角的坐标,因此:
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函数。关于c++ - 使用cvGet2D cvSet2D函数修改图像像素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32916100/