相关疑难解决方法(0)

显示网络摄像头序列TkInter

我用python编写了一个程序,导入了OpenCV的库.现在,我正在使用Tkinter进行GUI.我试图在GUI中显示网络摄像头,但我不能.我把代码放在函数中因为我想用按钮看我的网络摄像头.

我的代码是:

def webcam():
   img= cv.QueryFrame(cap)
   cam= PhotoImage(img)
   label1 = Label(root, image=cam)
   label1.image = cam
   label1.pack()
   label1.place(x=0, y=400)
Run Code Online (Sandbox Code Playgroud)

另外,我不知道如何在没有一个循环的情况下不断更新,因为我有另一个按钮来退出程序.

opencv tkinter

9
推荐指数
2
解决办法
2万
查看次数

python:tkinter显示来自网络摄像头的视频并进行QR扫描

我一直在尝试创建一个tkinter顶级窗口,用于流式传输视频格式网络摄像头并进行QR扫描.我从SO获得了这个QR扫描代码,而另一个代码只是从网络摄像头更新图像而不是在tkinter标签上流式传输视频.

我试图将这两者结合起来,以便使用标签更新来自网络摄像头的图像的顶层窗口和关闭顶层窗口的关闭按钮.当它流式传输图像时,它可以扫描QR码,如果扫描成功,网络摄像头和顶层窗口将关闭.

这是我试过的.

import cv2
import cv2.cv as cv
import numpy
import zbar
import time
import threading
import Tkinter
from PIL import Image, ImageTk

class BarCodeScanner(threading.Thread, Tkinter.Toplevel):
    def __init__(self):
        # i made this as a global variable so i can access this image
        # outside ie,. beyond the thread to update the image on to the  tkinter window
        global imgtk
        imgtk = None
        threading.Thread.__init__(self)
        self.WINDOW_NAME = 'Camera'
        self.CV_SYSTEM_CACHE_CNT = 5 # Cv has 5-frame cache
        self.LOOP_INTERVAL_TIME …
Run Code Online (Sandbox Code Playgroud)

python webcam opencv tkinter python-multithreading

9
推荐指数
1
解决办法
3274
查看次数

class Image没有属性'fromarray'

我正在使用OpenCV和Python Tkinter.我想将OpenCV的视频帧添加到Tkinter标签中.我使用了线程,因为我有两个循环.(我得到了这方面的指示)

当我试图运行代码它告诉我,

按任意键继续 ...线程中的异常Thread-2:Traceback(最后调用最后一次):文件"C:\ Python27\lib\threading.py",第808行,在__bootstrap_inner self.run()文件"C:\ Python27\lib\threading.py" ",第761行,在run self .__ target(*self .__ args,**self .__ kwargs)文件"c:\ users\user1\documents\visual studio 2013\Projects\defTstWindow\defT stWindow\defTstWindow.py",line 26,在makeGUI img = Image.fromarray(cv2image)AttributeError:class Image没有属性'fromarray'

我尝试使用Python类.我得到了同样的错误.

但是,如果我在一个功能运行的所有(如1日回答这个),它的正常工作.

我的代码有什么问题?

现在我有四个python模块.

1.Support.py

import cv2

global frame
frame=None
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

3.defTstWindow.py

import sys
import cv2
import Image, ImageTk

from Tkinter import *
import Support

def makeGUI(): …
Run Code Online (Sandbox Code Playgroud)

python multithreading opencv numpy tkinter

3
推荐指数
2
解决办法
5267
查看次数