Функция OpenCV inRange ()

Я пытаюсь запустить следующий код:

#include<opencv\cv.h>
#include<opencv\highgui.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;
}

Но похоже, что он не фильтруется, потому что при запуске кода появляется только пустое окно.

Как получить этот код для обнаружения красных цветов?

3

Решение

Вы должны изменить inRange функционировать так:

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

Если вы пытаетесь установить пороговое значение только для первого канала (синий канал), то вам нужно освободить другие каналы, поэтому установите его на 0 в lawerb И его dtype, обычно 255 за np.uint8

Например.

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

эта строка будет сравнивать 2-й канал (зеленый канал) и игнорировать другие.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector