我正在做一个有趣的项目:使用OpenCV从input图像解决Sudoku(如谷歌护目镜等)。 我已经完成了任务,但最终我发现了一个小问题,我来到这里。 我使用OpenCV 2.3.1的Python API编程。 以下是我所做的: 阅读图像 find轮廓 select最大面积的(也有点相当于平方)。 findangular点。 例如下面给出: ( 注意这里的绿线与Sudoku的真正边界正好相符,所以Sudoku可以正确地扭曲 。请检查下一张图片) 扭曲形象到一个完美的广场 如图像: 执行OCR(为此我使用了OpenCV-Python中简单数字识别OCR中给出的方法) 该方法运作良好。 问题: 看看这个图片。 执行此图像上的步骤4给出以下结果: 绘制的红线是数独边界真实轮廓的原始轮廓。 绘制的绿色线是近似的轮廓,它将是变形图像的轮廓线。 当然,在数独的上边缘,绿线和红线之间是有区别的。 所以在歪曲的时候,我没有得到数独的原始界限。 我的问题 : 我怎样才能在Sudoku的正确边界,即红线,或怎样才能消除红线和绿线之间的区别? 在OpenCV中有没有这样的方法?
我在testing应用程序中成功实现了OpenCV方块检测示例,但现在需要过滤输出,因为它很安静 – 或者是我的代码错误? 我对纸张的四个angular落感兴趣,以减less偏斜(像那样 )和进一步的处理… input输出: 原始图像: 点击 码: double angle( cv::Point pt1, cv::Point pt2, cv::Point pt0 ) { double dx1 = pt1.x – pt0.x; double dy1 = pt1.y – pt0.y; double dx2 = pt2.x – pt0.x; double dy2 = pt2.y – pt0.y; return (dx1*dx2 + dy1*dy2)/sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10); } – […]
我正在寻找创build一个图像的基础表,然后比较任何新的图像,以确定如果新的形象是一个精确(或closures)的基地重复。 例如:如果你想减less同一个图像的存储时间,你可以存储它的一个副本,并提供参考链接。 当input一个新的图像,你想比较一个现有的图像,以确保它不是一个重复的想法? 我的一个想法是缩小到一个小的缩略图,然后随机挑选100个像素的位置,并进行比较。
我正在尝试在OpenCV-Python(cv2)中实现“数字识别OCR”。 这只是为了学习的目的。 我想在OpenCV中学习KNearest和SVM特性。 我有100个样本(即图像)的每个数字。 我想和他们一起训练。 OpenCV示例附带了一个样本letter_recog.py 。 但我仍然无法弄清楚如何使用它。 我不明白什么是样本,回应等。另外,它首先加载一个txt文件,我不明白的第一个。 稍后再搜索一下,我可以在cpp示例中找到一个letter_recognition.data。 我用它并在letter_recog.py模型中为cv2.KNearest创建了一个代码(仅用于测试): import numpy as np import cv2 fn = 'letter-recognition.data' a = np.loadtxt(fn, np.float32, delimiter=',', converters={ 0 : lambda ch : ord(ch)-ord('A') }) samples, responses = a[:,1:], a[:,0] model = cv2.KNearest() retval = model.train(samples,responses) retval, results, neigh_resp, dists = model.find_nearest(samples, k = 10) print results.ravel() […]