繁体   English   中英

如何为CamShift的矩形输入参数定义矩形变量?

[英]How to define a rectangle variable for rectangle input argument for CamShift?

因此,大约两周前,我才刚开始使用c ++和OpenCV,但不确定自己在做什么。 基本上,我想给一个矩形起一个名字,以便以后可以使用它,我不确定该怎么做。 我当前的代码:

Point p1= Point(0,0);
Point p2= Point(backproj.rows/4,backproj.cols/4);

rectangle trackWindow = rectangle(backproj, p1, p2, Scalar(0,255,0), 3, 8, 0);
RotatedRect trackBox = CamShift(backproj, trackWindow, TermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ));

这将引发以下错误:

CamShift_Upload.cpp:108:12: error: expected ‘;’ before ‘trackWindow’
CamShift_Upload.cpp:108:79: error: statement cannot resolve address of overloaded function
CamShift_Upload.cpp:109:44: error: ‘trackWindow’ was not declared in this scope

所以我显然不是按照我应该的方式声明矩形变量,但是我不确定正确的方式。 任何帮助都会很棒。

OpenCV rectangle函数将一个矩形绘制到Mat上,它不返回任何内容。 函数签名(请参阅此处的文档 )是

void rectangle(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0);

或等效地,

void rectangle(Mat& img, Rect rec, const Scalar& color, int thickness=1, int lineType=8, int shift=0);

因此,矩形将绘制到您的第一个参数Mat名为backproj 如果希望将矩形用作结构,则可以使用OpenCV Rect结构。 请参阅有关Rect的文档 既然这样,你有一个编译错误,因为rectangle在您的线路rectangle trackWindow = rectangle(backproj, p1, p2, Scalar(0,255,0), 3, 8, 0); 不是有效的类型。

rectangle是用于绘制rectangle的函数调用,您可能想要创建一个Rect结构,例如:

Rect trackWindow(0,0,backproj.rows/4,backproj.cols/4);
RotatedRect trackBox = CamShift(backproj, trackWindow, TermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM