http://blog.naver.com/PostView.nhn?blogId=samsjang&logNo=220659310860&categoryNo=0&parentCategoryNo=49&viewDate=¤tPage=1&postListTopCurrentPage=1&from=search
이거 예제따라한건데
캠이 없어서 영상입력부분을 조금 바꿨거든 윈도우고 바탕화면에 1.mp4 잘있고 \대신 /쓴건 다른예제에선 잘먹힘
import numpy as np
import cv2
col, width, row, height, = -1, -1, -1, -1
frame = None
frame2 = None
imputmode = False
rectangle = None
roi_hist = None
def onMouse(event, x, y, flags, param):
global col, width, row, height, frame, frame2, inputmode
global rectangle, roi_fist, trackWindow
if imputmode:
if event == cv.EVENT_LBUTTONDOWN:
rectangle = True
col, row = x, y
elif event == cv2.EVENT_MOUSEMOVE:
if rectangle:
frame = frame2.copy()
cv2.rectangle(frame, (col, row), (x, y), (0, 255, 0), 2)
cv2.imshow('frame', frame)
elif event == cv2.EVENT_LBUTTONUP:
inputmode = False
rectangle = False
cv2.rectangle(frame, (col, row), (x, y), (0, 255, 0), 2)
height, width = abs(row-y), abs(col-x)
trackWindow = (col, row, width, height)
roi = frame[row:row+height, col:col+width]
roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)
roi_hist = cv2.calcHist([roi], [0], None, [180], [0, 180])
cv2.normalize(roi_hist, roi_hist, 0, 255, cv2.NORM_MINMAX)
return
def camShift():
global frame, frame2, inputmode, trackWindow, roi_hist, out
try:
cap = cv2.VideoCapture('C:/Users/wildc/Desktop/1.mp4')
cap.set(3, 480)
cap.set(4, 320)
except:
print("영상인식불가")
return
ret, frame = cap.read()
cv2.namedWindow('frame')
cv2.setMouseCallback('frame', onMouse, param=(frame, frame2))
termination = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1)
while True:
ret, frame = cap.read()
if not ret:
break
if trackWindow is not None:
hsv = cv2.cvColor(frame, cv2.COLOR_BGR2HSV)
dst = cv2.calcBackProject([hsv], [0], roi_hist, [0, 180], 1)
ret, trackWindow = cv2.CamShift(dst, trackWindow, termination)
pts = cv2.boxPoint(ret)
pts = np.int0(pts)
cv2.polylines(frame, [pts], True, (0, 255, 0), 2)
cv2.imshow('frame', frame)
k = cv2.waitKey(60) & 0xFF
if k == 27:
break
if k == ord('i'):
print('추적할영역을 지정하고 아무키나 누르세요')
inputmode = True
frame2 = frame.copy()
while inputmode:
cv2.imshow('frame', frame)
cv2.waitKey(0)
cap.release()
cv2.destroyAllWindows()
5
camShift()
아렇게 창 최소화되서뜨고 전체화면 누르면
이케 회색임
뭐가잘못된거임..?
아 해결