2017-09-30 3 views
0

J'essaie de détecter mon mobile en utilisant la gamme de couleurs hsv, mais le problème est de savoir comment je devrais choisir la gamme de couleurs pour détecter mon mobile.détecter l'objet par couleur dans opencv python

La couleur mobile est métallique dorée.

Y at-il un moyen facile de trouver la gamme de couleurs en hsv si je connais la valeur BGR?

Voici mon code

detectMobile.py

import cv2 
import numpy as np 

cap = cv2.VideoCapture(0) 

while True: 
    _, frame = cap.read() 
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) 

    lowerColor = np.array([0, 0, 0]) 
    upperColor = np.array([74, 74, 83]) 

    mask = cv2.inRange(hsv, lowerColor, upperColor) 
    res = cv2.bitwise_and(frame, frame, mask=mask) 

    cv2.imshow('frame', frame) 
    cv2.imshow('mask', mask) 
    #cv2.imshow('res', res) 

    if cv2.waitKey(1) & 0xff == ord('q'): 
     break 

cv2.destroyAllWindows() 
cap.release() 
+0

Veuillez ne pas rediffuser la même question. Si vous éditez votre message, il sera ajouté au début de la nouvelle file d'attente. –

Répondre

0

Oui, il y a un moyen facile: vous pouvez simplement écrire quelque chose à ce similaire

lowerColor = np.uint8([[[0, 0, 0]]]) 
upperColor = np.uint8([[[74, 74, 83]]]) 
hsv_lower = cv2.cvtColor(lowerColor, cv2.COLOR_BGR2HSV) 
hsv_upper = cv2.cvtColor(upperColor, cv2.COLOR_BGR2HSV) 

comme le suggère les tutoriels opencv python (1)!

+0

J'ai suivi le tutoriel opencv python, et j'ai obtenu la valeur hsv_color [[[37 189 212]]] pour la valeur BGR de la couleur dorée métallique [55,212,175], maintenant comment je devrais ajuster la plage? –

+0

Déterminez votre plage dans l'espace colorimétrique RVB, puis convertissez-la en hsv, comme le code que j'ai posté. – openTankist