【问题标题】:cxFreeze issues with OpenCV - video doesn't playOpenCV 的 cxFreeze 问题 - 视频无法播放
【发布时间】:2018-11-14 22:31:18
【问题描述】:

当我使用 cx_Frezze 为以下 OpenCV 代码创建 exe 时,它按预期工作:

import cv2
import numpy as np

# mouse callback function
def draw_circle(event,x,y,flags,param):
    if event == cv2.EVENT_LBUTTONDBLCLK:
        cv2.circle(img,(x,y),100,(255,50,70),-1)

# Create a black image, a window and bind the function to window
img = np.zeros((512,512,3), np.uint8)
cv2.namedWindow('image')
cv2.setMouseCallback('image',draw_circle)

while(1):
    cv2.imshow('image',img)
    if cv2.waitKey(20) & 0xFF == 27:
        break
cv2.destroyAllWindows()

但是,当我尝试用下面的简单代码做同样的事情时,视频不会显示。基本上,什么都不会发生。没有错误消息,没有崩溃......什么都没有。但是,没有视频。

import numpy as np
import cv2
try:
    cap = cv2.VideoCapture('some_video.wmv')

    while(cap.isOpened()):
        ret, frame = cap.read()

        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

        cv2.imshow('frame', gray)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    cap.release()
    cv2.destroyAllWindows()
except:
    pass

两者的setup.py 代码相同,只是文件名不同。

【问题讨论】:

    标签: python opencv cx-freeze cv2


    【解决方案1】:

    print 语句添加到您的代码中以进行调试:

    import numpy as np
    import cv2
    try:
        cap = cv2.VideoCapture('some_video.wmv')
        if not cap.isOpened():
            print('VideoCapture not opened')
            exit(1)
    
        while True:
            ret, frame = cap.read()
    
            if not ret:
                print('frame is empty')
                break
    
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
            cv2.imshow('frame', gray)
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
    
        cap.release()
        cv2.destroyAllWindows()
    except:
        pass
    

    如果VideoCapture 未打开或框架为空,则检查this answer

    【讨论】:

    • 感谢您的回答,非常感谢。正如你所建议的,我检查了;似乎 VideoCapture 没有打开。我检查了您的其他答案,FFMPEG 是的。我担心的是,当我运行 python 文件时,此代码按预期工作。我只有在使用 cx_Freeze 创建 exe 文件后才遇到问题。通常,当 cx_Freeze 丢失一些文件时,它会通知我,所以如果 FFMPEG 丢失,我会收到错误消息。但是,我没有收到任何错误。
    • @JoeT.Boka 使用dependency walker 找出可执行文件链接到哪些库。
    猜你喜欢
    • 2013-08-05
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    相关资源
    最近更新 更多