Я пытался выяснить, как обнаружить карты на столе, а затем извлечь изображения только карт. После некоторого чтения, я решил, что лучше использовать cv.Canny для обнаружения краев, так как карты будут единственными вещами на белом столе. Затем получите изображение карты из прямоугольного выреза изображения в соответствии с обнаруженными краями.
Но я не уверен, как получить информацию о краях (координаты) из информации о Канни. Я могу получить информацию о Canny и сохранить ее в IplImage, но я не уверен, как получить информацию, необходимую для создания прямоугольника вокруг карты и вырезания изображения.
import cv
cam = cv.CaptureFromCAM(0)
while True:
capture = cv.QueryFrame(cam)
#apply mask to block out white background
grey = cv.CreateImage(cv.GetSize(capture), 8, 1)
masked_image = cv.CreateImage(cv.GetSize(capture), 8, 3)
cv.CvtColor(capture, grey, cv.CV_BGR2GRAY)
cv.Threshold(grey, grey, 100, 255, cv.CV_THRESH_BINARY)
cv.Zero(masked_image)
cv.Not(grey, grey)
cv.Copy(capture, masked_image, grey)
#detect corners
corners = cv.CreateImage(cv.GetSize(masked_image), 8, 1)
#cv.CornerHarris(masked_image, corners, ?)
cv.Canny(grey, corners, 900, 890)
cv.ShowImage('b_window', corners)
cv.WaitKey(2)