0

我正在尝试使用库中的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()as CvArrs 的最小和最大阈值以防止发生此问题,或者是否有其他方法可以解决此问题?

4

2 回答 2

2

有几个版本cvInRange()。您想要的是cvInRangeS(),它CvScalar作为两个阈值参数。将调用替换为cvInRange()cvInRangeS()解决您的问题。

于 2013-07-23T21:03:55.880 回答
0

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

RGB = 123,123,123

在 cvScalar 你必须像这样输入

cvScalar example = cvScalar(123,123,123,0);
于 2015-06-25T04:58:01.360 回答