在OpenCV 2.1中,我用cv :: inRange对cv :: Mat应用了颜色过滤:
cv::CvScalar* scalar_low = new cv::CvScalar(10,20,30,0);
cv::CvScalar* scalar_up = new cv::CvScalar(20,30,40,0)
cv::Mat* in = new cv::Mat(cv::Size(10,10), CV_8UC3);
cv::Mat* out = new cv::Mat(cv::Size(10,10), CV_8UC1);
cv::inRange(*in, *scalar_low, *scalar_up, *out); // <-----
在OpenCV 2.3(当前版本)中,不再支持使用cv :: CvScalar作为参数的cv :: inRange。
void inRange(Mat src, Mat lowerb, Mat upperb, Mat dst);
如何在C ++中使用当前定义的此函数?
答案 0 :(得分:3)
OpenCV的当前版本是2.4.1。
请阅读此版本中的文档:http://docs.opencv.org/modules/core/doc/operations_on_arrays.html?highlight=inrange#inrange
以下是目前的格式:
C++: void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst)
如果您想查看正确的定义,请查看opencv示例附带的camshiftdemo.cpp第122行。
inRange(hsv, Scalar(0, smin, MIN(_vmin,_vmax)),Scalar(180, 256, MAX(_vmin, _vmax)), mask);
希望你能从中找出正确的定义。
答案 1 :(得分:0)
以下版本适用于opencv 2.4.1:
cv::inRange(src, cv::Scalar(159, 135, 135), cv::Scalar(179, 255, 255), dstB);