导入图像的像素坐标记录 (Python)

Posted

技术标签:

【中文标题】导入图像的像素坐标记录 (Python)【英文标题】:Pixel Co-Ordinate Logging for an imported Image (Python) 【发布时间】:2018-07-10 03:27:56 【问题描述】:

好的,我希望能够记录给定图像中像素的坐标。该图像用于校准和确定相机在不同距离处的镜头畸变和 iFoV(视野)。

我正在尝试编写一个程序(在 Python 中),该程序将允许我在目录中打开初始图像并允许我精确定位以下区域的像素坐标;

左上、右上、中上、右中、左中、左下、中下和右上

所以基本上,我需要打开图像单击这 8 个点(在 csv 文件中记录这些点)然后按一个键,例如''SPACEBAR'' 或 ''ESC'' 等会在目录中显示下一个图像(新长度的工具)。能够重复许多图像。

示例校准工具 - 红点是通缉的坐标:

【问题讨论】:

【参考方案1】:

我已经编写了一个模拟工具来满足您的目的。

filepath 中传递适当的路径包含图像。 按下并松开鼠标左键以查看标记。 按空格键清除当前图像上的标记(以防出错)。 按小写“q”移动到下一张图片。

代码:

import cv2
import numpy as np
import glob

ix, iy = -1, -1

# mouse callback function
def draw_circle(event, x, y, flags, param):
    global ix, iy, mode

    if event == cv2.EVENT_LBUTTONDOWN:
        ix, iy = x, y

    elif event == cv2.EVENT_LBUTTONUP:
        cv2.circle(img, (x, y), 5, (0, 0, 255), -1)
        print(x, y)

cv2.namedWindow('image')
cv2.setMouseCallback('image', draw_circle)

filepath = r'C:\Users\Jackson\Desktop\*.png'   
for file in glob.glob(filepath):
    img = cv2.imread(file)
    img2 = img.copy()

    while(1):
        cv2.imshow('image', img)

        k = cv2.waitKey(1) & 0xFF
        if k == 32:                    #--- Press spacebar to clear markings on current image ---
            img = img2.copy()
        elif k == ord('q'):            #--- Press lowercase q to move to next image ---
            break

cv2.destroyAllWindows()  

【讨论】:

感谢,我测试后会回复你

以上是关于导入图像的像素坐标记录 (Python)的主要内容,如果未能解决你的问题,请参考以下文章

如何利用matlab导入并提取jpg彩色图像像素点的坐标及其RGB值?想要完整的编码。谢谢哈。

如何从python中的图像中获取特定像素(蓝色)的x,y坐标?

涂色-BFS

涂色-BFS

给定一个图像,一个像素点和一个以像素为单位的半径。如何找到它创建的圆形边框的像素坐标

在OpenCV打开的图像上,已知图像上的某点坐标,如何获取该点像素值