OpenCV inRange() function



我试着运行以下代码:

#include<opencvcv.h>
#include<opencvhighgui.h>
using namespace cv;

int main() {
    VideoCapture cap;
    cap.open(0);

    while (1) {
Mat src;
Mat threshold;
cap.read(src);
inRange(src, Scalar(0, 0, 0), Scalar(255, 0, 0), threshold);
imshow("thr", threshold);
imshow("hsv", src);
        waitKey(33);
    }
    return 0;
}

但是它似乎没有过滤,因为当我运行代码时,只有一个空白窗口出现。

如何让代码检测红色?

您必须这样修改inRange函数:

inRange(src, Scalar(0, 0, 0), Scalar(255, 255, 255), threshold);

如果您尝试阈值只是第一个通道(蓝色通道),那么您必须使其他通道空闲,因此将其设置为lawerb中的0及其dtype,通常为np.uint8255

inRange(src, Scalar(0, 50, 0), Scalar(255, 100, 255), threshold);

这一行将比较第二个通道(绿色通道)并忽略其他通道。

相关内容

  • 没有找到相关文章

最新更新