我正在我的拳头CV2颜色检测项目中工作,需要一些帮助才能继续进行。 到目前为止,我一直在抓取图像并将其过滤为特定颜色(请参见下面的代码和图片):
import numpy as np
from PIL import ImageGrab
import cv2
def rec_picture():
raw_pic = np.array(ImageGrab.grab(bbox=(10, 70, 1330, 609)))
colored_pic = cv2.cvtColor(raw_pic, cv2.COLOR_BGR2RGB)
return colored_pic
def filter_for_color(picture, color):
if color == 'red':
l_h = 116
l_s = 158
l_v = 51
u_h = 179
u_s = 192
u_v = 255
elif color == 'yellow':
l_h = 88
l_s = 56
l_v = 139
u_h = 119
u_s = 255
u_v = 255
hsv = cv2.cvtColor(picture, cv2.COLOR_RGB2HSV)
lower_color = np.array([l_h, l_s, l_v])
upper_color = np.array([u_h, u_s, u_v])
mask = cv2.inRange(hsv, lower_color, upper_color)
res = cv2.bitwise_and(picture, picture, mask=mask)
return res
def main():
while(True):
screen = filter_for_color(rec_picture(), 'yellow')
cv2.imshow('window', screen)
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
if __name__ == '__main__':
main()
上面的代码的结果是:
Results after the filtering process.
下一步,我希望python将图片中那些长的黄色部分识别为“对象”,并接收每个绿色框中心的屏幕坐标(以便稍后控制鼠标):
Gimp-made sketch of what I want to do
结果,我想到了类似的东西:
screen_coordinates_obj1 = get_obj_coordinates (obj1)
谢谢!