我正在编写一个代码,仅从视频源中提取黄色。将其转换为HSV后,我在inRangeS函数中提供该帧。我还有一个上限,下限和输出框架。
这是我的代码: -
cam>>frame;
imshow("Main",frame);
cvtColor(frame,frame,COLOR_BGR2HSV);
imshow("HSV",frame);
cvInRange(frame,cvScalar(20,100,100),cvScalar(30,255,255),redspace);
imshow("Red",redspace);
它出现以下错误: -
error: cannot convert ‘cv::Mat’ to ‘const CvArr* {aka const void*}’ for argument ‘1’ to ‘void cvInRange(const CvArr*, const CvArr*, const CvArr*, CvArr*)’
cvInRange(frame,cvScalar(20,100,100),cvScalar(30,255,255),redspace);
答案 0 :(得分:2)
您正在使用OpenCV旧C接口的cvInRange
功能。
如果您使用cv::Mat
,则必须使用C ++界面中的函数cv::inRange
,如下所示。
cv::inRange(frame,cv::Scalar(20,100,100),cv::Scalar(30,255,255),redspace);