【发布时间】:2018-08-06 02:03:47
【问题描述】:
我用python写了一个小脚本,这样我就可以点击图像,程序会返回我点击图像点的像素位置和BGR中的像素颜色。
我使用点击位置来访问图像 numpy 数组(通过 cv.imread)。
问题是返回的位置偏离了原始图像。不知何故,图像的实际大小被修改了,我得到了错误的像素颜色或索引超出了范围。我尝试使用与原始图像相同的几何形状,但没有成功。
代码如下:
# -*- coding: utf-8 -*-
import cv2 as cv
import numpy as np
import Tkinter as tk
from PIL import ImageTk, Image
import sys
imgCV = cv.imread(sys.argv[1])
print(imgCV.shape)
root = tk.Tk()
geometry = "%dx%d+0+0"%(imgCV.shape[0], imgCV.shape[1])
root.geometry()
def leftclick(event):
print("left")
#print root.winfo_pointerxy()
print (event.x, event.y)
#print("BGR color")
print (imgCV[event.x, event.y])
# convert color from BGR to HSV color scheme
hsv = cv.cvtColor(imgCV, cv.COLOR_BGR2HSV)
print("HSV color")
print (hsv[event.x, event.y])
# import image
img = ImageTk.PhotoImage(Image.open(sys.argv[1]))
panel = tk.Label(root, image = img)
panel.bind("<Button-1>", leftclick)
#panel.pack(side = "bottom", fill = "both", expand = "no")
panel.pack(fill = "both", expand = 1)
root.mainloop()
非常感谢您的任何帮助!
【问题讨论】: