2016-04-18 2 views
1
Core.inRange(frame,new Scalar(minA,minB,minC),new Scalar(maxA,maxB,maxC),dst); 

Я не понимаю, какой параметр я должен ввести в Скаляр. и как я могу конвертировать RGB в него. (Я использую openCV 2.412). в соответствии с http://docs.opencv.org/2.4.12/doc/tutorials/core/basic_geometric_drawing/basic_geometric_drawing.html?highlight=scalar параметр должен быть BGR, но он не достиг желаемого результата.java openCV Core.inRange Входные параметры

Вход: Core.inRange(frame,new Scalar(0,0,0),new Scalar(0,0,255),dst); входного изображения: enter image description here

Выход:

enter image description here

ответ

2

красный прямоугольник имеет значение (0,0,240), так что вы можете использовать:

inRange(img, new Scalar(0, 0, 230), new Scalar(0, 0, 255), dst); 

зеленый прямоугольник имеет значение (0,240,0), так что вы можете использовать:

inRange(img, new Scalar(0, 230, 0), new Scalar(0, 255, 0), dst); 

синий прямоугольник имеет значение (240,0,0), так что вы можете использовать:

inRange(img, new Scalar(230, 0, 0), new Scalar(255, 0, 0), dst); 

серый прямоугольник имеет значение (100,100,100), поэтому вы можете использовать:

inRange(img, new Scalar(90, 90, 90), new Scalar(110, 110, 110), dst); 

Поиск всех прямоугольников сразу может быть сложным. Это лучше сначала обнаружить черную (0,0,0) фон, а затем инвертировать маску:

inRange(img, new Scalar(0, 0, 0), new Scalar(10, 10, 10), dst); 
bitwise_not(dst, dst); 
+0

большое спасибо :) –

+0

Рад, что помог, D Пожалуйста, не забудьте принять ответ – Miki

Смежные вопросы