小编arv*_*ndh的帖子

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
查看次数

如何使用 Pyinstaller 为 Linux 机器创建可执行文件?

我在 Ubuntu 14.04(64 位)上使用 python 编写了一个小型 GUI 桌面应用程序。我想要我的代码的可执行版本,以便它可以在其他 linux 机器上运行。我能够为 Windows 和 Mac 创建可执行文件。但是在 Linux 上创建的二进制文件不起作用。

对于 Windows:我用来使代码可执行的命令是

pyinstaller -D -F -n main -w "main.py"
Run Code Online (Sandbox Code Playgroud)

这在其他 Windows(64 位)机器上也能正常工作。

对于 Mac:

pyinstaller --windowed "main.py"
Run Code Online (Sandbox Code Playgroud)

工作得很好。

对于 linux:我试过了

pyinstaller main.py
Run Code Online (Sandbox Code Playgroud)

pyinstaller -D -F -n main -w "main.py"
Run Code Online (Sandbox Code Playgroud)

我无法打开二进制文件 这在我打开可执行文件时显示

我尝试使用更改权限chmod,仍然是相同的错误。

我在用:

  • 蟒蛇 2.7 - 64 位
  • pyinstaller 2.1
  • 特金特

linux tkinter pyinstaller python-2.7 ubuntu-14.04

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

Windows中的os.remove()给出了"另一个进程正在使用的[错误32]"

我知道这个问题在SO和其他地方安静之前已经被问过了.我仍然无法完成它.如果我的英语不好,我很抱歉

在linux中删除文件要简单得多.刚刚os.remove(my_file)完成了这项工作,但在windows中它给出了

    os.remove(my_file)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process: (file-name)
Run Code Online (Sandbox Code Playgroud)

我的代码:

line_count = open(my_file, mode='r')        #
t_lines = len(line_count.readlines())       # For total no of lines
outfile = open(dec_file, mode='w')
with open(my_file, mode='r') as contents:
    p_line = 1
    line_infile = contents.readline()[4:]
    while line_infile:
        dec_of_line = baseconvert(line_infile.rstrip(),base16,base10)
        if p_line == t_lines:
            dec_of_line += str(len(line_infile)).zfill(2)
            outfile.write(dec_of_line + "\r\n")
        else:
            outfile.write(dec_of_line + "\r\n")
        p_line += 1
        line_infile = contents.readline()[4:]
outfile.close()
os.remove(my_file) …
Run Code Online (Sandbox Code Playgroud)

python windows

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

python struct.pack():在列表或元组中打包多个数据

假设我有一个listtuple包含数字的类型long long,

x = [12974658, 638364, 53637, 63738363]
Run Code Online (Sandbox Code Playgroud)

如果想struct.pack单独使用它们,我必须使用

struct.pack('<Q', 12974658)
Run Code Online (Sandbox Code Playgroud)

或者如果我想做多个,那么我必须像这样明确地提到它

struct.pack('<4Q', 12974658, 638364, 53637, 63738363)
Run Code Online (Sandbox Code Playgroud)

但是,我如何在声明中listtuple内部插入项目struct.pack.我尝试使用这样的for循环.

struct.pack('<4Q', ','.join(i for i in x))
Run Code Online (Sandbox Code Playgroud)

得到错误说expected string, int found,所以我将包含类型的列表转换intstr,现在包装它们变得复杂得多.因为整个列表被转换为字符串(就像一个句子).

截至目前我正在做一些事情

binary_data = ''
x = [12974658, 638364, 53637, 63738363]
for i in x:
    binary_data += struct.pack('<Q', i)
Run Code Online (Sandbox Code Playgroud)

我打开包装就像

struct.unpack('<4Q', binary_data)
Run Code Online (Sandbox Code Playgroud)

我的问题:有没有更好的方法,比如我可以直接指出listtuplestruct.pack声明中,或者可能是一个班轮?

python struct list

3
推荐指数
1
解决办法
6932
查看次数

我可以使用Docker通过pyinstaller创建exe吗

我应该为Windows,Mac和Linux创建一个可执行文件。但是,我暂时没有Windows计算机,也根本没有Mac。我有一台Linux机器,但是我不想更改分区,甚至不想用Windows创建双重引导。

我已经使用python创建了一个应用程序,并且正在使用pyinstaller来创建我的可执行文件。如果我使用Docker(在Linux上安装Windows和Mac的映像),是否可以为Windows和Mac创建具有所有依赖项的可执行文件(如.dllWindows的所有依赖文件以及Mac的任何类似文件)?

python windows macos pyinstaller docker

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