java – HoughCircles发现错误的圈子(opencv)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – HoughCircles发现错误的圈子(opencv),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2284字,纯文字阅读大概需要4分钟。
内容图文
我有下面的图片,我真正想要检测的是盒子上方的圆圈,每个方框的左上角都有字母.但结果是它还检测到其他一些圈子.我不知道为什么.
我要检测的图像:
这就是结果:
正如你所看到的,它有时可以找到圆圈的字母,也可以找到乐高的圆圈.这是我的代码:
Mat source = Highgui.imread("testar.jpg", Highgui.CV_LOAD_IMAGE_COLOR);
Mat destination = new Mat(source.rows(), source.cols(), source.type());
Imgproc.cvtColor(source, destination, Imgproc.COLOR_RGB2GRAY);
Imgproc.GaussianBlur(destination, destination, new Size(3,3),0,0);
Mat circles = new Mat();
Imgproc.HoughCircles(destination, circles, Imgproc.CV_HOUGH_GRADIENT, 1, 20, 10, 20, 7, 13);
int radius;
Point pt;
for (int x = 0; x < circles.cols(); x++) {
double vCircle[] = circles.get(0,x);
if (vCircle == null)
break;
pt = new Point(Math.round(vCircle[0]), Math.round(vCircle[1]));
radius = (int)Math.round(vCircle[2]);
// draw the found circle
Core.circle(destination, pt, radius, new Scalar(0,255,255), 3);
Core.circle(destination, pt, 3, new Scalar(255,255,255), 3);
}
Highgui.imwrite("foundCircles.jpg", destination);
解决方法:
嗯,恕我直言,霍夫圆检测算法正如它应该的那样工作.它正在检测圈子.
但是,您似乎不想检测位于手机屏幕区域外的圆圈.
如果您以某种方式设法将手放在手机四个角(或移动屏幕)的确切坐标上,则可以实施一个简单的解决方案.
您可以使用Rect类来定义矩形块:
Rect cropRect = new Rect(topLeft_X, topLeft_Y, widthOfRectangle, heightOfRectangle);
然后使用此矩形对象重现仅包含所需区域的新图像矩阵(来自原始图像矩阵):
Mat croppedImage = new Mat(inputImg, cropRect);
现在,通过您身边的新鲜裁剪图像,您可以使用Paul Hough先生的算法获得您想要的所有乐趣.
现在,如果由于某种原因,事实证明你没有任何关于如何获得手机四角坐标的线索(即手机异想天开地移动),或者你对霍夫圈子感到非常恼火检测报告O和S为圆圈,然后您可以尝试寻求任何良好的OCR实施的帮助,以帮助减轻您的痛苦.
由于您使用的是Java,因此可以使用Tess4J.或者,您可以尝试调整this project以解除移动屏幕中角色的位置. (还有许多其他OCR可能会有所帮助,please refer to this website for an exhaustive list)
一旦获得了字符的确切位置,您可以尝试仅在字符左上角附近运行Hough Circle检测块.
但需要注意的是,OCR在Java中往往有点令人讨厌和笨拙.
如果你仍对结果不满意(或者如果OCR似乎会干扰你的新陈代谢),你可以尝试最后一种方法…… Hough Line检测.
从线的极坐标中检测线,估计形成电话键盘的网格,然后在网格的左上角检测圆圈.
内容总结
以上是互联网集市为您收集整理的java – HoughCircles发现错误的圈子(opencv)全部内容,希望文章能够帮你解决java – HoughCircles发现错误的圈子(opencv)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。