如何使用Python OpenCV在图像的指定坐标(X,Y)处绘制点
用Python OpenCV在指定坐标绘制点的方法
嘿,这事儿超简单!我来给你分享两种实用的方法,根据你的需求选就行:
方法1:用cv2.circle()画可自定义的实心点
这种方法最常用,因为你能灵活控制点的大小、颜色,哪怕要画大一点的标记也没问题。步骤如下:
- 先导入OpenCV库:
import cv2
- 读取你的图像(记得替换成自己的图片路径):
img = cv2.imread("your_image.png")
- 定义要画点的坐标(就是你拿到的(X, Y)):
x, y = 300, 200 # 这里替换成你的实际坐标
- 调用
cv2.circle()画实心点:
# 参数说明: # img:要绘制的图像 # (x, y):点的坐标(注意是(X,Y),对应图像的列、行) # radius:点的半径,数值越大点越大 # color:点的颜色,OpenCV用BGR格式,比如(0,0,255)是红色 # thickness:线条粗细,设为-1表示实心填充 cv2.circle(img, (x, y), radius=3, color=(0, 0, 255), thickness=-1)
- 查看结果或者保存图像:
# 显示图像 cv2.imshow("Image with Point", img) cv2.waitKey(0) # 按任意键关闭窗口 cv2.destroyAllWindows() # 或者保存修改后的图像 cv2.imwrite("image_with_point.png", img)
方法2:直接修改像素值画单个像素点
如果只需要画一个极小的像素点,直接修改对应位置的像素值更高效,但要注意OpenCV的图像索引规则:
import cv2 img = cv2.imread("your_image.png") x, y = 300, 200 # 重点!OpenCV中图像的索引是 (行, 列),对应(Y, X),所以是img[y, x] # 设置像素颜色为绿色(BGR格式) img[y, x] = (0, 255, 0) # 后续显示/保存和方法1一样 cv2.imshow("Single Pixel Point", img) cv2.waitKey(0) cv2.destroyAllWindows()
几个注意事项
- 确保你的坐标
(x,y)在图像范围内:可以用height, width = img.shape[:2]获取图像的高度(Y范围0到height-1)和宽度(X范围0到width-1),超出范围的坐标不会有效果。 - OpenCV默认用BGR颜色空间,如果你习惯RGB,记得先转换:
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB),但画点时还是要对应调整颜色值。
内容的提问来源于stack exchange,提问作者prosenjit
相关产品推荐
相关产品推荐

