python fromarray_类图像没有“fromarray”属性

在尝试将OpenCV的视频帧显示到Tkinter应用中时,作者遇到了'Image'类没有'fromarray'属性的错误。代码通过线程分别处理视频捕获和GUI显示。错误出现在将OpenCV的帧转换为PIL Image对象的过程中。虽然在单独的函数中转换可以正常工作,但在类中执行时却失败。问题可能源于导入和模块交互的细节,或者OpenCV和PIL库的版本不兼容。
摘要由CSDN通过智能技术生成

我正在使用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类。我也遇到了同样的错误。

但是,如果我在一个函数中运行all(就像this的第一个答案),它可以正常工作。

我的代码有什么问题?

现在我有四个python模块。

1.支撑.pyimport 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.deftstswindow.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.主.pyimport CamHandler

import defTstWindow

import threading

import time

threading.Thread(target=CamHandler.getFrame).start()

time.sleep(1)

threading.Thread(target=defTstWindow.makeGUI).start()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值