使用Python实现图像标记点的坐标输出

本文介绍如何利用PyLab库中的ginput()函数实现在图像上进行交互式标注。通过展示一个具体示例,读者可以了解到如何加载图像、提示用户点击特定数量的点并获取这些点击位置的坐标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sometimes we have need to interact  with an application,for example by marking points in an image,or you need to annotation some training data.PyLab comes with a simple function ginput() the let's you do just that .Here's a short example.

from PIL import Image
from pylab import *

im = array(Image.open('test.jpg'))
imshow(im)
print 'Please click 3 points'
x =ginput(3)
print 'you clicked:',x
show()

This plots an image and waits for the user to click three times in the image region of the figures window.The coordinates[x,y] of the clicks are saved in a list x.


关于Image Engineering & Computer Vision的更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.

### 使用Python提取图像中的点坐标Python中,可以使用多种方法提取图像中的点坐标。以下是几种常见且有效的方法: #### 方法一:提取黑色像素点的坐标 通过遍历图像矩阵,可以提取出所有黑色像素点的坐标。这种方法适用于二值化图像(即只有黑白两种颜色的图像)。代码示例如下[^1]: ```python def extract_line_position(image): list_y = [] # 存储y坐标 list_x = [] # 存储x坐标 for i in range(len(image)): # 遍历每一行 for j in range(len(image[i])): # 遍历每一列 if image[i][j] == 0: # 如果像素值为0(黑色) list_x.append(j) # 添加x坐标 list_y.append(len(image) - i) # 添加y坐标 return list_x, list_y ``` 此方法会返回所有黑色像素点的坐标列表。 #### 方法二:通过鼠标点击获取坐标 用户可以通过鼠标点击图像上的特定位置来获取其坐标。这种方法适用于需要交互式选择的情况。以下是一个基于OpenCV实现[^2]: ```python import cv2 def on_EVENT_LBUTTONDOWN(event, x, y, flags, param): if event == cv2.EVENT_LBUTTONDOWN: # 当鼠标左键按下时 xy = "%d,%d" % (x, y) print(f"点击的坐标为: {xy}") # 输出坐标 cv2.circle(img, (x, y), 2, (0, 0, 255), -1) # 在图像标记点击点 cv2.putText(img, xy, (x, y), cv2.FONT_HERSHEY_PLAIN, 1.0, (0, 0, 255)) # 显示坐标 cv2.imshow("image", img) img = cv2.imread('example.jpg') # 读取图像 cv2.namedWindow("image") cv2.setMouseCallback("image", on_EVENT_LBUTTONDOWN) while True: cv2.imshow("image", img) key = cv2.waitKey(5) & 0xFF if key == ord('q'): # 按下'q'键退出程序 break cv2.destroyAllWindows() ``` #### 方法三:使用OCR技术提取文本及其坐标 如果图像中包含文本内容,可以使用OCR工具(如Tesseract)提取文本及其对应的坐标信息。以下是一个示例代码[^3]: ```python import pytesseract from PIL import Image # 配置Tesseract路径 pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' # 打开并读取图片文件 img = Image.open('example.png') # 对图片进行灰度处理 img = img.convert('L') # 提取文本及其坐标 boxes = pytesseract.image_to_boxes(img, lang='chi_sim') print(boxes) ``` 该方法适用于图像中包含可识别文本的情况。 ### 注意事项 - 如果图像不是二值化图像,建议先对其进行预处理(如灰度化、二值化等)。 - 在使用鼠标点击获取坐标时,确保图像窗口大小适合操作。 - OCR方法仅适用于提取文本及其坐标,不适用于提取普通像素点。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值