我一直在想如何检测桌子上的卡片,然后提取卡片的图像。在阅读了一些资料之后,我认为最好使用cv.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)