pyinstaller打包python+opencv 無法在別人電腦上正常運行 問題所在:opencv_ffmpeg341_64.dll


 

用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
    img = None
    re_set()
    if shipin.isOpened():
        ret, frame = shipin.read()
        h, w, _ = frame.shape
        img = cv2.resize(frame, (int(w / s), int(h / s)), interpolation=cv2.INTER_AREA)
        print('變形完成')
    else:
        print('視頻讀取失敗')
    cv2.imshow('after resize', img)

檢查到視頻讀取失敗

也就是

shipin.isOpened()

總是返回False

網上查了下

https://stackoverflow.com/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的鏈接https://opencv.org/opencv-3-4-1.html

下載后直接雙擊解壓

出來一個opencv的文件夾

64就選帶64的

把這個dll放到程序目錄下面

在程序里開頭加上

import ctypes

try:
    temp=ctypes.windll.LoadLibrary( 'opencv_ffmpeg341_64.dll' )

except:
    pass

pyinstaller打包的時候就會自動添加

保險起見 把這個dll加入到生成的文件夾里


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM