java openCV Core.inRange 输入参数

Roy*_*ron 3 java opencv

Core.inRange(frame, new Scalar(minA,minB,minC), new Scalar(maxA,maxB,maxC), dst);
Run Code Online (Sandbox Code Playgroud)

我不明白应该向标量输入哪个参数。以及如何将 RGB 转换为它。(我使用的是 openCV 2.412)。根据http://docs.opencv.org/2.4.12/doc/tutorials/core/basic_geometric_drawing/basic_geometric_drawing.html?highlight=scalar 参数应该是 BGR,但它没有达到预期的结果。

输入:

Core.inRange(frame, new Scalar(0,0,0), new Scalar(0,0,255), dst);
Run Code Online (Sandbox Code Playgroud)

输入图片: 在此处输入图片说明

输出:

在此处输入图片说明

Mik*_*iki 6

红色矩形具有价值(0,0,240),所以你可以使用:

inRange(img, new Scalar(0, 0, 230), new Scalar(0, 0, 255), dst);
Run Code Online (Sandbox Code Playgroud)

绿色矩形具有价值(0,240,0),所以你可以使用:

inRange(img, new Scalar(0, 230, 0), new Scalar(0, 255, 0), dst);
Run Code Online (Sandbox Code Playgroud)

蓝色矩形具有价值(240,0,0),所以你可以使用:

inRange(img, new Scalar(230, 0, 0), new Scalar(255, 0, 0), dst);
Run Code Online (Sandbox Code Playgroud)

灰色矩形具有价值(100,100,100),所以你可以使用:

inRange(img, new Scalar(90, 90, 90), new Scalar(110, 110, 110), dst);
Run Code Online (Sandbox Code Playgroud)

一次查找所有矩形可能很棘手。最好先检测黑色(0,0,0)背景,然后反转遮罩:

inRange(img, new Scalar(0, 0, 0), new Scalar(10, 10, 10), dst);
bitwise_not(dst, dst);
Run Code Online (Sandbox Code Playgroud)