如何在图像上绘制矩形以得到感兴趣的区域以及在图像的x,y轴上的点?

问题描述

我正在尝试创建一个查看器,在其中可以使用鼠标输入获取图像的感兴趣区域并返回x,y轴上的点。我已经尝试过使用selectRoi方法,但是我无法在图像查看器中使用它,在其他测试中我可以使用此方法,但是它在另一个窗口中创建了裁剪的图像,我希望将其标记为在查看器中的图像中,并以一些变量返回x,y轴的点。我是编程新手,有人对我如何在Pegar_area_interesse方法中执行此操作有任何建议吗? 我想做一些类似于附件的图片。 我将代码留在下面。

from tkinter import *
from PIL import ImageTk,Image
from os import listdir
from os.path import isfile,join
import cv2

root=Tk()

root.title('viewer das image')
# read images from the directory
root.iconbitmap('path of image')

# read all filenames from the directory
onlyfiles = [f for f in listdir('path of image') if isfile(join('path of image',f))]

# puts all images in the list
image_list=[]
for nome in onlyfiles:
    image_list.append(ImageTk.PhotoImage(Image.open('path of image'+nome)))

my_label=Label(image=image_list[1])
my_label.grid(row=0,column=0,columnspan=3)

def forward(image_number):
    global my_label
    global button_forward
    global button_back
    global button_numeroImagem
    global button_Pegar_area_interesse

    my_label.grid_forget()
    my_label = Label(image=image_list[image_number-1])
    button_forward =Button(root,text='>>',command=lambda : forward(image_number+1))
    button_back = Button(root,text='<<',command=lambda : back(image_number-1))
    button_numeroImagem = Button(root,text=str(image_number)+' de ' + str(len(image_list)),state=disABLED)

    if image_number == int(len(image_list)):
        button_forward = Button(root,state=disABLED)

    my_label.grid(row=0,columnspan=3)
    button_back.grid(row=1,column=0)
    button_forward.grid(row=1,column=2)
    button_numeroImagem.grid(row=1,column=1)




def back(image_number):
    global my_label
    global button_forward
    global button_back
    global button_numeroImagem
    global button_Pegar_area_interesse

    my_label.grid_forget()
    my_label = Label(image=image_list[image_number - 1])
    button_forward = Button(root,command=lambda: forward(image_number + 1))
    button_back = Button(root,command=lambda: back(image_number - 1))
    button_numeroImagem = Button(root,text=str(image_number) + ' de ' + str(len(image_list)),state=disABLED)

    if image_number == 1:
        button_back = Button(root,column=1)

def Pegar_area_interesse(image_number):
    pass

button_back =Button(root,command=lambda: back(),state=disABLED)
button_exit =Button(root,text='exit program',command=root.quit)
button_forward =Button(root,command=lambda: forward(2))
button_numeroImagem =Button(root,text='1 de ' + str(len(image_list)),state=disABLED)
button_Pegar_area_interesse=Button(root,text='Select ROI')


button_back.grid(row=1,column=0)
button_forward.grid(row=1,column=2)
button_numeroImagem.grid(row=1,column=1)
button_exit.grid(row=2,column=1)
button_Pegar_area_interesse.grid(row=3,column=0)



root.mainloop()

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)