Find Chessboard in Live (with Python OpenCV)
체스보드 찾기에 대해 라이브 버젼을 만들어 봤다.
#!/usr/bin/python
# -*- coding:utf8 -*-
import cv2
import time
import sys
clicked = False
iscapture = False
deviceid = 0
def onMouse(event, x, y, flags, param):
global clicked
global iscapture
if event == cv2.cv.CV_EVENT_RBUTTONUP:
clicked = True
elif event == cv2.cv.CV_EVENT_LBUTTONUP:
iscapture = True
#print 'capture OK!!'
if len(sys.argv) <= 1:
deviceid = 0
else:
deviceid = int(sys.argv[1])
# termination criteria
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
cameraCapture = cv2.VideoCapture(deviceid)
# camera resolution setting
cameraCapture.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 640)
cameraCapture.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 480)
cv2.namedWindow('KnVision Window')
cv2.setMouseCallback('KnVision Window', onMouse)
print 'Showing camera feed. Click window or press any key to stop.'
success, frame = cameraCapture.read()
print 'Capture Start!!'
while success and cv2.waitKey(1) == -1 and not clicked:
if iscapture == True :
tsec = time.time()
tname = time.strftime("%Y-%m-%dT%Hh%Mm%Ss", time.gmtime(tsec))
print 'capture tiem : ', tname
fname = tname + ".jpg"
cv2.imwrite(fname, frame)
iscapture = False
cv2.imshow('KnVision Window', frame)
success, frame = cameraCapture.read()
# Find the chess board corners
ret, corners = cv2.findChessboardCorners(frame, (9,6),None)
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
#cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria)
# Draw and display the corners
cv2.drawChessboardCorners(frame, (9,6), corners,ret)
cv2.destroyWindow('KnVision Window')
이전에 만들었던 라이브 캡쳐 버젼과 합체하여
라이브 상에서 체스보드를 발견하면
이렇게 표시해준다.
체스보드 찾기 라이브 버젼~
'ComputerVision' 카테고리의 다른 글
라즈베리 파이에 OpenCV 설치하기 (3.0 기준) (0) | 2016.06.22 |
---|---|
PyQt4 + OpenCV (0) | 2016.06.15 |
Camera Calibration (with Python OpenCV) (0) | 2015.08.19 |
Python에서 OpenCV 사용하기 (0) | 2015.08.01 |
C# 에서 OpenCV 사용하기 (0) | 2015.07.24 |