在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++中使用当前定义使用此函数?

最佳答案

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

希望您能从中找出正确的定义。

关于c++ - 在OpenCV 2.3中调用C++ inRange函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11179498/

10-11 15:12