pyinstaller打包python+opencv⽆法在别⼈电脑上正常运⾏问题
所在:op。。。
⽤python+opencv写了个程序,在⾃⼰电脑上⼀切正常,但在别⼈电脑上就是运⾏不了
报错:
Exception in Tkinter callback
Traceback (most recent call last):
File "tkinter\__init__.py", line 1699, in __call__
File "ShowTheWay.py", line 53, in main
NameError: name 'img' is not defined
Traceback (most recent call last):
File "ShowTheWay.py", line 25, in on_mouse
NameError: name 'img' is not defined
然后我⼜回去查代码,也没有写错啊,后来加了⼏个检查点,才发现是视频读取这⾥就已经出了问题
def re_size():
global img
python能在手机上运行吗img = None
re_set()
if shipin.isOpened():
ret, frame = ad()
h, w, _ = frame.shape
img = size(frame, (int(w / s), int(h / s)), interpolation=cv2.INTER_AREA)
print('变形完成')
else:
print('视频读取失败')
cv2.imshow('after resize', img)
检查到视频读取失败
也就是
shipin.isOpened()
总是返回False
⽹上查了下
stackoverflow/questions/11699298/opencv-2-4-videocapture-not-working-on-windows
看来是因为别⼈电脑上没有opencv环境,⽽pyinstaller⼜没有把对应的dll打包到exe⾥⾯,坑爹么这不是
只好⼿动加⼀下
⽂件名:opencv_ffmpeg341_64.dll
341是指opencv版本
我是在anaconda下安装的,所以该⽂件位置在C:\ProgramData\Anaconda3\Lib\site-packages
也可以去opencv官⽹下载
附上3.4.1的链接/opencv-3-4-1.html
下载后直接双击解压
出来⼀个opencv的⽂件夹
64就选带64的
把这个dll放到程序⽬录下⾯
在程序⾥开头加上
import ctypes
try:
temp=ctypes.windll.LoadLibrary( 'opencv_ffmpeg341_64.dll' ) except:
pass
pyinstaller打包的时候就会⾃动添加
保险起见把这个dll加⼊到⽣成的⽂件夹⾥

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。