Thersholding с помощью функции cv2.inRange ()

Я пытаюсь разделить объекты в определенных цветовых диапазонах изображения с помощью opencv / python. Я использую для этого функцию cv2.inRange (), и когда я передаю ей следующие параметры: cv2.inRange (hsv, (0,0,0), (170,255,255)) hsv - мое изображение, это вызывает ошибку ниже:

  File "c:/Users/fazil/Desktop/Bilgisayar Bilimi/Python/Python Konuları/Opencv/Projeler/Object Tracking.pyw", line 59, in find_the_positions
    threshold = cv2.inRange(hsv,color_down,color_up)
TypeError: Expected Ptr<cv::UMat> for argument 'lowerb'

Почему это происходит и как это исправить? Спасибо.


person someone    schedule 31.01.2021    source источник
comment
что вы нашли в документации для inRange()? Он должен описывать, какие данные вы должны использовать в inRange()   -  person furas    schedule 01.02.2021


Ответы (1)


Я считаю, что вам нужно передавать массивы Numpy, или, по крайней мере, это то, что я сделал.

import numpy as np

lower_gray = np.array([0, 0, 50])
upper_gray = np.array([360, 255, 160])

mask = cv2.inRange(hsv, lower_gray, upper_gray)
person Levi Harrison    schedule 31.01.2021