如何使用Python获取图像的坐标?

什么是OpenCV

OpenCV是为图像处理和图像分析而开发的开源库,可以在Python和C++等多种语言中使用。

通过使用 OpenCV,您可以使用 Python 轻松执行图像处理,例如边缘和轮廓提取以及对象检测。

它必须在使用 OpenCV 之前安装。

例如,通过以下命令安装后尝试使用它。

pip install opencv-python

如何在OpenCV中获取鼠标点击位置的坐标

现在让我们看看如何使用 OpenCV 获取图像中特定位置的坐标。

依次使用以下两个函数。

使用 OpenCV 显示图像

获取用OpenCV显示的图像的点击坐标

1.使用OpenCV显示图像

首先,我将向您展示如何使用 OpenCV 在 GUI 中显示图像。

OpenCV 导入和使用如下。

处理时,用imread()读取图像。

import cv2
img = cv2.imread('要导入的图像路径')

加载的图像可以通过使用 imshow() 显示在单独的窗口中,如下所示。

将打开一个具有指定名称的新窗口并显示图像。

使用 OpenCV 显示图像时,使用 waitKey() 等待键输入。

通过将等待时间指定为 0,您可以无限期地等待直到输入完成。

您可以使用下面的代码描述显示图像并按任意键关闭它的过程。

cv2.imshow('窗口名称', img)
cv2.waitKey(等待)

如何使用Python获取图像的坐标?

2.获取OpenCV中显示的图片的点击坐标

接下来,单击单独窗口中显示的图像以获取单击位置的坐标。

通过使用OpenCV中的回调函数,您可以描述对imshow窗口的动作的处理,例如滚轮操作和双击。

例如,要显示鼠标左键点击的坐标,可以这样写一个回调函数:

def onMouse(event, x, y, flags, params):
    if event == cv2.EVENT_LBUTTONDOWN:
        print(x, y)

调用回调函数时,您可以获取回调事件的类型、事件的 x 坐标和 y 坐标作为参数。

单击位置的 x 和 y 坐标自动输入到 x 和 y 中。

鼠标左键点击时cv2.EVENT_LBUTTONDOWN会发生该事件,所以用上面的函数就可以显示鼠标左键点击时的坐标。

要设置图像窗口以显示上面定义的回调函数,请使用cv2.setMouseCallback()。

第一个参数指定对图像进行鼠标操作处理的窗口名称,第二个参数指定要执行的回调函数。

cv2.setMouseCallback('窗口名称', 回调函数)

实例操作

基于以上,我们来写一个示例代码,获取鼠标点击位置的坐标。

将下面的示例代码保存在与图像相同的目录中并运行它。

import cv2

def onMouse(event, x, y, flags, params):
    if event == cv2.EVENT_LBUTTONDOWN:
        print(x, y)

img = cv2.imread('sample.png')
cv2.imshow('sample', img)
cv2.setMouseCallback('sample', onMouse)
cv2.waitKey(0)

当您运行示例代码时,保存的图像将显示在一个单独的窗口中,因此单击图像上的任意位置将显示单击位置的坐标。

结语

本次介绍了如何用OpenCV获取鼠标点击时的坐标。

OpenCV是一个专门用于图像处理的库,但它也有自己的GUI操作方法,所以我认为这次介绍的方法在手动进行图像处理时可以应用。

最后编辑于:2023/03/08作者: 烽烟无限