Python获取图像像素坐标:cv2与plt两种实现方案

Finn
Finn
发布时间:2026-10-15 | 6人浏览过
原创

本文介绍在Python中通过鼠标点击获取图像像素坐标的两种常用方法。分别基于OpenCV(cv2)和Matplotlib(plt)库实现,演示如何绑定鼠标事件、实时显示坐标及绘制标记。同时包含利用获取的坐标进行区域像素处理的示例代码,适用于图像分析前的坐标定位需求。

Python获取图像像素坐标:cv2与plt两种实现方案

在图像处理任务中,有时需要精确定位图像中特定像素的位置坐标。通过以下示例程序,用户可以在运行后使用鼠标点击目标区域,程序将实时输出该点的坐标值。操作结束时,只需按下键盘上的“q”键并回车,即可终止程序运行。

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 10 13:58:57 2022
@author: 2540817538(有问题联系此QQ)
"""
import cv2
img=cv2.imread('C:/Users/25408/Desktop/p1.jpg')
 
def on_EVENT_LBUTTONDOWN(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        xy = "%d,%d" % (x, y)
        print(x,y)
        cv2.circle(img, (x, y), 2, (0, 0, 255))
        cv2.putText(img, xy, (x, y), cv2.FONT_HERSHEY_PLAIN,1.0, (0,0,255))
        cv2.imshow("image", img)
        
cv2.namedWindow("image")
cv2.setMouseCallback("image", on_EVENT_LBUTTONDOWN)
while(1):
    cv2.imshow("image", img)
    key = cv2.waitKey(5) & 0xFF
    if key == ord('q'):
        break
cv2.destroyAllWindows()

运行效果示例:

补充:Python中通过鼠标点击获取图像像素坐标的两种实现方式及区域像素处理

在图像窗口中,通过鼠标点击操作返回对应的坐标数据。

方法一:使用OpenCV(cv2)库实现

方法一:使用OpenCV(cv2)库实现。

利用获取的坐标可以对图像区域进行进一步处理。例如,代码演示了选取两个点,并将这两点围成的矩形区域像素值置为零的操作。

import cv2
import numpy as np
img = cv2.imread('C:\\Users\\mimi\\Desktop\\1.jpg')
a =[]
b = []
def on_EVENT_LBUTTONDOWN(event, x, y,flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        xy = "%d,%d" % (x, y)
        a.append(x)
        b.append(y)
        cv2.circle(img, (x, y), 1, (255, 0, 0), thickness=-1)
        cv2.putText(img, xy, (x, y), cv2.FONT_HERSHEY_PLAIN,
                    1.0, (0, 0, 0), thickness=1)
        cv2.imshow("image", img)

cv2.namedWindow("image")
cv2.setMouseCallback("image", on_EVENT_LBUTTONDOWN)
cv2.imshow("image", img)
cv2.waitKey(0)
print(a[0],b[0])

img[b[0]:b[1],a[0]:a[1],:] = 0   #注意是 行,列(y轴的,X轴)
cv2.imshow("image", img)
cv2.waitKey(0)
print (a,b)

方法二:使用Matplotlib(plt)库实现

方法二:使用Matplotlib(plt)库实现。

该方法在尝试直接处理图像像素时未能成功实现区域置黑,但前一种cv2方法可以正常完成此操作。

import matplotlib.pyplot as plt
from PIL import Image

im = Image.open("C:\\Users\\mimi\\Desktop\\1.jpg")
plt.imshow(im, cmap = plt.get_cmap("gray"))
pos=plt.ginput(2)
print(pos)
a=[]
b=[]
for i in range(len(pos)):
    a.append(pos[i][0])
    b.append(pos[i][1])
print (a,b)
im[a[0]:a[1],b[0]:b[1],:]
plt.imshow(im)

总结

以上就是关于Python获取图像像素坐标的详细介绍,更多相关Python获取像素点坐标的内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表