Я хотел обнаружить объекты на изображении HSV. но я продолжаю получать ошибку, ожидаемый Ptr для аргумента "% s" - PullRequest
0 голосов
/ 09 января 2020

Я пытался создать окно трекбара и получить значение hsv изображения, отрегулировав трекбар. создал маску, а затем настроил трекбар, чтобы обнаружить объект изображения hsv

введите код

   def nothing(x):
      pass

cv.namedWindow("Tracking")
cv.createTrackbar("LH","Tracking",0,255,nothing)
cv.createTrackbar("LS","Tracking",0,255,nothing)
cv.createTrackbar("LV","Tracking",0,255,nothing)
cv.createTrackbar("UH","Tracking",255,255,nothing)
cv.createTrackbar("US","Tracking",255,255,nothing)
cv.createTrackbar("UV","Tracking",255,255,nothing)
while True:
    frame = cv.imread("C:/Users/acer/Desktop/insects/New folder/ins.jpg")
    hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)

    l_h = cv.getTrackbarPos("LH","Tracking")
    l_s = cv.getTrackbarPos("LS","Tracking")
    l_v = cv.getTrackbarPos("LV","Tracking")

    u_h = cv.getTrackbarPos("UH","Tracking")
    u_s = cv.getTrackbarPos("US","Tracking")
    u_v = cv.getTrackbarPos("UV","Tracking")

    l_b = np.array([l_h,l_s,l_v])
    u_b = np.array([u_h,u_s,u_v])

    mask = (hsv,l_b,u_b)

    res = cv.bitwise_and(frame,frame,mask=mask)

    cv.imshow("frame",frame)
    cv.imshow("mask",mask)
    cv.imshow("res",res)

    key = cv.waitKey(1)
    if key == 27:
        break
cv.destroyAllWindows()

1 Ответ

0 голосов
/ 09 января 2020

Есть несколько проблем с вашим кодом:

1) У вас нет import утверждений. Вам нужно как минимум:

import cv2 as cv
import numpy as np

2) Ваш отступ неверен. Ваша функция nothing() не должна иметь отступ.

3) Вы не набрали inRange(), вам нужно:

mask = cv.inRange(hsv,l_b,u_b)

4) Вы масштабировали оттенок в диапазоне 0. .255, когда он фактически имеет диапазон 0..180 при использовании с uint8 изображениями, так что 360 градусов получается как 180 градусов, что меньше верхнего предела 255 uint8.

Кстати Это довольно плохая практика - делать "l oop инвариант" вещи внутри al oop - я имею в виду ту часть, где вы нажимаете диск каждую миллисекунду и перечитываете изображение, повторно декодируете JPEG и конвертировать его в HSV. Все, что можно сделать за пределами l oop, а затем внутри него, просто сделать быструю копию образа HSV в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...