OpenCV cvInRange()不使用cvScalar()

时间:2013-07-23 20:59:28

标签: c++ opencv compiler-errors

我正在尝试使用cvInRange()库中的OpenCV函数,但是,当我使用时:

cvInRange(image, cvScalar(100, 0, 0), cvScalar(256, 0, 0), processedImage);

我收到以下错误:

cannot convert ‘CvScalar’ to ‘const CvArr* {aka const void*}’ for argument ‘2’ to ‘void cvInRange(const CvArr*, const CvArr*, const CvArr*, CvArr*)’
                 cvInRange(image, cvScalar(100, 0, 0), cvScalar(256, 0, 0), processedImage);

有没有办法将cvInRange()的最小和最大阈值指定为CvArr以防止此问题发生,还是有其他方法可以解决此问题?

2 个答案:

答案 0 :(得分:2)

cvInRange()有多个版本。你想要的是cvInRangeS(),它将CvScalar作为两个阈值参数。用[{1}}替换cvInRange()的来电可以解决您的问题。

答案 1 :(得分:0)

我认为您的代码错过了1个号码。 我记得cvScalar有4个元组,必须输入每个数字。 例如,如果您使用具有3元组的RGB代码:

RGB = 123,123,123

在cvScalar中你必须输入这样的

cvScalar example = cvScalar(123,123,123,0);