【发布时间】:2012-04-10 16:09:55
【问题描述】:
我一直在试图弄清楚如何检测桌子上的牌,然后只提取牌的图像。在做了一些阅读之后,我认为最好使用 cv.Canny 进行边缘检测,因为卡片将是白桌上唯一的东西。然后,根据检测到的边缘从图像的矩形切口中获取卡片图像。
但我不确定如何从 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)
【问题讨论】:
-
我特别需要知道从图像中检测到的卡片的x、y坐标以及高度、宽度。
-
这是一种不同的语言,我特别声明我需要边/角的 x、y 坐标。
标签: python image opencv detection