OpenCV cvInRange()无法使用cvScalar()

OpenCV cvInRange() not Working With cvScalar()

本文关键字:cvScalar cvInRange OpenCV      更新时间:2023-10-16

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

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,以防止此问题发生,或者是否有其他方法来解决此问题?

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

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

RGB = 123,123,123

在cvScalar中,您必须像这样键入

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