在 OpenCV 中绘制矩形
Posted
技术标签:
【中文标题】在 OpenCV 中绘制矩形【英文标题】:Draw rectangle in OpenCV 【发布时间】:2016-10-19 01:02:54 【问题描述】:我想用这个函数在 OpenCV 中画一个矩形:
rectangle(Mat& img, Rect rec, const Scalar& color, int thickness=1, int lineType=8, int shift=0 )
但是当我使用它时,我遇到了一些错误。我的问题是:任何人都可以用一个例子来解释这个功能吗?我找到了一些例子,但有另一个功能:
rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0)
本例关于第二个功能:
rectangle(image, pt2, pt1, Scalar(0, 255, 0), 2, 8, 0);
我理解这个函数,但是对于第一个函数,我在参数Rect
中遇到了问题。我不知道我怎样才能让它更致命?
【问题讨论】:
【参考方案1】:接受两个cv::Point
的cv::rectangle
函数采用矩形的左上角和右下角(documentation 中分别为pt1 和pt2)。如果该矩形与接受cv::Rect
的cv::rectangle
函数一起使用,那么您将得到相同的结果。
// just some valid rectangle arguments
int x = 0;
int y = 0;
int width = 10;
int height = 20;
// our rectangle...
cv::Rect rect(x, y, width, height);
// and its top left corner...
cv::Point pt1(x, y);
// and its bottom right corner.
cv::Point pt2(x + width, y + height);
// These two calls...
cv::rectangle(img, pt1, pt2, cv::Scalar(0, 255, 0));
// essentially do the same thing
cv::rectangle(img, rect, cv::Scalar(0, 255, 0))
【讨论】:
我按照你给我的例子做了,但函数没有在图像上绘制矩形,而是在角落绘制。要不要我加入我的代码看看 如上图所示,矩形的左上角是图像的左上角。也许您可以以某种方式发布您正在使用的图片或显示出了什么问题? /* 全局变量 */ CascadeClassifier walks_cascade;垫图像1;诠释 x = 0;整数 y = 0;诠释 w = 10;整数 h = 20; int main( ) // 加载人脸级联(.xml 文件) walkers_cascade = CascadeClassifier("hogcascade_pedestrians.xml"); // 读取图像 image5 = imread("ped5.jpg");矩形矩形(x,y,w,h); std::vector这是一个在图像上绘制预定义矩形的简单示例
using namespace cv;
int main()
Mat img=imread("myImage.jpg");
Rect r=Rect(10,20,40,60);
//create a Rect with top-left vertex at (10,20), of width 40 and height 60 pixels.
rectangle(img,r,Scalar(255,0,0),1,8,0);
//draw the rect defined by r with line thickness 1 and Blue color
imwrite("myImageWithRect.jpg",img);
return 0;
【讨论】:
例如,谢谢,但是如何在图像上绘制矩形。 我有图像,我想用那个函数在上面画一个矩形 这是一个演示 Rect(x,y,w,h) 对象的示例。 rectangle() 函数用于在图像上绘制矩形。如果您已经有一张图片,那么您可以使用如上所示的 rectangle() 调用在其上绘制一个矩形 你能看看我自己的代码,它在你的帖子上方。以上是关于在 OpenCV 中绘制矩形的主要内容,如果未能解决你的问题,请参考以下文章