У меня есть видео о ферме коров.Мои цели -
(а) получить углы расположения коровьего загона (коровника)
(б) получить углы контейнера для еды
Вотмой подход, о котором я думаю -
(a) - capture the frame and freeze on the 1st frame
- user will manually put the mouse on the corners
- the x,y location will be saved in a list
- press "p" key to proceed to the next frame
(b) - freeze the frame on the second frame
- user will manually put the mouse on the corners
- the x,y location will be saved in another list
- press "c" key to proceed to next frames
У меня уже есть другие коды для выполнения других операций.Я попробовал следующие коды, чтобы получить точку из изображения (не видео).Теперь убедитесь, как поставить видео на паузу и использовать существующий кадр в качестве входного изображения
import cv2, numpy as np
ix,iy = -1,-1
# the list of locations
mouse = []
def get_location(event,x,y,flags,param):
global ix,iy
if event == cv2.EVENT_LBUTTONDBLCLK:
ix,iy = x,y
mouse.append([x,y])
# take image and name it
img = cv2.imread("colo.png",0)
cv2.namedWindow('image')
cv2.setMouseCallback('image',get_location)
while(1):
cv2.imshow('image',img)
k = cv2.waitKey(20) & 0xFF
if k == 27:
break
elif k == ord('a'):
print (ix,iy)
print (mouse)
cv2.destroyAllWindows()
Ответы, которые я ищу, таковы: (a) как зафиксировать кадр на определенном номере кадра и (b)cv2.setMouseCallback ('image', get_location) принимает строку в качестве первого аргумента, как вставить кадр в качестве аргумента здесь?