0

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++ で使用するにはどうすればよいですか?

4

2 に答える 2

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

あなたがそれから正しい定義を理解できることを願っています。

于 2012-06-24T18:43:05.987 に答える
0

以下はopencv 2.4.1で動作します:

cv::inRange(src, cv::Scalar(159, 135, 135), cv::Scalar(179, 255, 255), dstB);
于 2012-08-31T03:05:32.103 に答える