kto*_*tom 0 python opencv image-processing shapes contour
我正在开发一个项目,该项目涉及自动单击视频游戏中出现在屏幕上的对象。当然,每个对象都有一个独特的蓝色轮廓 - 所以我从图像中分离出了除蓝色之外的所有颜色。
下图显示了经过预处理的游戏屏幕截图示例。在 Python 中使用 OpenCV,我怎样才能:
例如,
您可以使用一种相对鲜为人知的cv2方法cv2.moments():
import cv2
img = cv2.imread("image.png")
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(img_gray, 128, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
for cnt in contours:
moments = cv2.moments(cnt)
center_x = int(moments["m10"] / moments["m00"])
center_y = int(moments["m01"] / moments["m00"])
top_x, top_y = cnt[cnt[..., 1].argmin()][0]
cv2.circle(img, (center_x, center_y), 3, (0, 0, 255), -1)
cv2.circle(img, (top_x, top_y), 3, (0, 0, 255), -1)
cv2.imshow("Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
输入图像:
输出图像:
变量名已经很好地解释了代码,毕竟 Python 与简单的英语类似!
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |