gpt4 book ai didi

python - 类图像没有属性 'fromarray'

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:16 24 4
gpt4 key购买 nike

我正在使用 OpenCV 和 Python Tkinter。我想将 OpenCV 的视频帧获取到 Tkinter 标签。我使用了线程,因为我有两个循环。 (我从 this 得到了指示)

当我尝试运行代码时,它向我显示,

Press any key to continue . . . Exception in thread Thread-2:Traceback (mostrecent call last):File "C:\Python27\lib\threading.py", line 808, in __bootstrap_inner self.run() File "C:\Python27\lib\threading.py", line 761, in run self.__target(*self.__args, **self.__kwargs)File "c:\users\user1\documents\visual studio 2013\Projects\defTstWindow\defT stWindow\defTstWindow.py", line 26, in makeGUI img = Image.fromarray(cv2image) AttributeError: class Image has no attribute 'fromarray'

我已经尝试使用 Python 类。我遇到了同样的错误。

但是,如果我在一个函数中运行所有内容(如 this 的第一个答案),它会正常工作。

我的代码有什么问题?

现在我有四个 python 模块。

1.Support.py

import cv2

global frame
frame=None

2.CamHandler.py

import cv2
import numpy as np
import Support

cam=cv2.VideoCapture(0)


def getFrame():
while 1:
_,frm=cam.read()

#cv2.imshow('frm',frm)
Support.frame=frm

if cv2.waitKey(1) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break

3.defTstWindow.py

import sys
import cv2
import Image, ImageTk

from Tkinter import *
import Support

def makeGUI():

top=Tk()

top.geometry("600x449+650+151")
top.title("Test Window")
top.configure(background="#d9d9d9")

lblFrame = Label(top)
lblFrame.place(relx=0.03, rely=0.04, height=411, width=544)
lblFrame.configure(background="#d9d9d9")
lblFrame.configure(disabledforeground="#a3a3a3")
lblFrame.configure(foreground="#000000")
lblFrame.configure(text='''Label''')
lblFrame.configure(width=544)

cv2image = cv2.cvtColor(Support.frame, cv2.COLOR_BGR2RGBA)
img = Image.fromarray(cv2image)
imgtk = ImageTk.PhotoImage(image=img)
lblFrame.imgtk = imgtk
lblFrame.configure(image=imgtk)
#lblFrame.after(10, show_frame)

top.mainloop()

4.main.py

    import CamHandler
import defTstWindow

import threading
import time


threading.Thread(target=CamHandler.getFrame).start()
time.sleep(1)
threading.Thread(target=defTstWindow.makeGUI).start()

最佳答案

Tkinter 命名空间包含类 Image,所以当您编写

from Tkinter import *

您将 Image 的定义替换为来自 Tkinter 的定义。

import * 可能很方便,尤其是在交互式 shell 中工作时,但不建议将其用于脚本和更大的程序,原因正是这个问题中所展示的。将该导入更改为

from Tkinter import Tk, Label

(将您需要的任何其他名称添加到该导入语句中。)

关于python - 类图像没有属性 'fromarray',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40724661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com