python opencv-finding圆(Sun),从图片中将圆心居中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python opencv-finding圆(Sun),从图片中将圆心居中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1666字,纯文字阅读大概需要3分钟。
内容图文
我在这里是新来的,并且在编程方面有点新手.
我有一个问题.我在bmp文件和16位中有Sun的图片.图片看起来像带有黑色背景的白色圆圈.
我想找到一个圆并在x,y坐标中标识其中心.
我有这个剧本
import cv
import numpy as np
orig = cv.LoadImage('sun0016.bmp')
grey_scale = cv.CreateImage(cv.GetSize(orig), 8, 1)
processed = cv.CreateImage(cv.GetSize(orig), 8, 1)
cv.Smooth(orig, orig, cv.CV_GAUSSIAN, 5, 5)
cv.CvtColor(orig, grey_scale, cv.CV_RGB2GRAY)
cv.Erode(grey_scale, processed, None, 10)
cv.Dilate(processed, processed, None, 10)
cv.Canny(processed, processed, 5, 70, 3)
cv.Smooth(processed, processed, cv.CV_GAUSSIAN, 15, 15)
storage = cv.CreateMat(orig.width, 1, cv.CV_32FC3)
cv.HoughCircles(processed, storage, cv.CV_HOUGH_GRADIENT, 1, 16.0, 10, 140)
for i in range(0, len(np.asarray(storage))):
print "circle #%d" %i
Radius = int(np.asarray(storage)[i][0][2])
x = int(np.asarray(storage)[i][0][0])
y = int(np.asarray(storage)[i][0][1])
center = (x, y)
print x,y
cv.Circle(orig, center, 1, cv.CV_RGB(0, 255, 0), 1, 8, 0)
cv.Circle(orig, center, Radius, cv.CV_RGB(255, 0, 0), 1, 8, 0)
cv.Circle(processed, center, 1, cv.CV_RGB(0, 0, 0), -1, 8, 0)
cv.Circle(processed, center, Radius, cv.CV_RGB(255, 0, 0), 3, 8, 0)
cv.ShowImage("sun0016", orig)
cv.ShowImage("processed", processed)
cv_key = cv.WaitKey(0)
当我运行此程序时,我发现太阳的边缘与中心成圆,但是非常不准确.
请知道您为精确搜索圈设置了参数HoughCircles模块.
谢谢
解决方法:
这里的主要问题是为您的半径找到合适的范围.
您可能会看一下图片并猜出半径.
从您给出的图片中,我猜想180-220是一个很好的范围.
您的代码如下所示:
cv.HoughCircles(processed, storage, cv.CV_HOUGH_GRADIENT, 1, 16.0, 180, 220)
只需尝试为minRadius和maxRadius找到合适的值,这应该可以正常工作.
内容总结
以上是互联网集市为您收集整理的python opencv-finding圆(Sun),从图片中将圆心居中全部内容,希望文章能够帮你解决python opencv-finding圆(Sun),从图片中将圆心居中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。