pyinstaller打包python+opencv 無法在別人電腦上正常運行 問題所在:opencv_ffmpeg341_64.dll(根據自己裝的OpenCV版本)

 

用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放到程序目錄下面

在程序裏開頭加上

按 Ctrl+C 複製代碼
按 Ctrl+C 複製代碼

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章