2015-09-29 156 views
1

我正在編寫代碼以從視頻源中單獨提取黃色。在將其轉換爲HSV後,我在inRangeS函數中輸入該幀。我也有一個上限,下限和輸出幀。Opencv中的錯誤 - 無法將'cv :: Mat'轉換爲'const CvArr *

這是我的代碼: -

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); 

回答

2

您正在使用cvInRange功能從OpenCV中的老C接口。

如果您使用的是cv::Mat,則必須使用C++接口中的函數cv::inRange,如下所示。

cv::inRange(frame,cv::Scalar(20,100,100),cv::Scalar(30,255,255),redspace);