python - 查找图像中的圆心
问题描述
我对编程相当陌生,需要编写一个程序来找到位于正方形图像每个角落的 4 个圆盘(圆)的中心。
我不知道光盘的确切坐标,但对它们有一个很好的近似值。我怎样才能找到 4 个圆盘中每个圆盘的中心位置?
解决方案
moments
您可以使用OpenCV查找形状的质心:
import cv2
# read image through command line
img = cv2.imread(args["ipimage"])
# or load it from a path
#img = cv2.imread(R"/usr/home/dinges/4c.png")
# convert the image to grayscale
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# convert the grayscale image to binary image
ret,thresh = cv2.threshold(gray_image,127,255,0)
# find contours in the binary image
im2, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
# calculate moments for each contour
M = cv2.moments(c)
# calculate x,y coordinate of center
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
print('centroid: X:{}, Y:{}'.format(cX, cY))
cv2.circle(img, (cX, cY), 5, (255, 255, 255), -1)
cv2.putText(img, "centroid", (cX -25, cY -25),cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2)
# display the image
cv2.imshow("Image", img)
cv2.waitKey(0)
推荐阅读
- php - Wordpress 按元值日期排序
- angular - 如何在图像上渲染 D3 js 的面积图?(在 Angular 8 中)
- android - 仅在 ANDROID M 上出现网络错误 - 所有权限都很好。使用 android:usesCleartextTraffic="true"
- java - 尝试连接到 MongoDB 时出现异常 Class ConnectionString not found
- python - 如何使用 Python 为 JSON 中的选定属性选择最高属性
- internationalization - vuetify & nuxt:当前语言环境切换时如何切换 vuetify 组件语言环境?
- dns - 使用 ares_query() 等效于 res_nquery()
- python - Lepton 相机:使用 Python 控制快门模式
- powerbi - 委派 Web 应用权限以使用 Power BI API
- html - 如何使用样式和换行符解析 dart 中的 HTML 内容?