乎啦啦 2024-03-02 14:48 采纳率: 0%
浏览 15

Opencv保存视频失败

在python文件中运行这段代码,视频无法保存;在ipynb文件中运行这段代码,视频成功保存。这是什么原因?

使用同样的环境运行,仅仅是文件的差异,会导致结果不同吗?不知道有没有遇到类似问题的伙伴,希望能够解答疑惑!


```python
# 读取并保存视频


import numpy as np
import cv2 as cv


cap = cv.VideoCapture(1)
# 定义编解码器并创建VideoWriter对象
fourcc = cv.VideoWriter_fourcc(*'XVID')
out = cv.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
    # frame = cv.flip(frame, 0)
    # 写翻转的框架
    out.write(frame)
    cv.imshow('frame', frame)
    if cv.waitKey(1) == ord('q'):
        break
# 完成工作后释放所有内容
cap.release()
out.release()
cv.destroyAllWindows()

```

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2024-03-02 14:48
    关注

    乎啦啦 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    这个问题可能与文件的路径有关。在Python文件中运行该代码时,视频保存的路径是相对于Python文件所在的路径。而在ipynb文件中运行该代码时,视频保存的路径是相对于Jupyter Notebook的工作路径。

    解决方案:

    1. 确保在Python文件中视频保存路径的正确性。可以使用绝对路径来保存视频文件,确保路径的准确性。
    out = cv.VideoWriter('/path/to/output.avi', fourcc, 20.0, (640, 480))
    
    1. 确保在ipynb文件中视频保存路径的正确性。在ipynb文件中,可以通过os.getcwd()函数获取当前工作路径,然后使用相对路径来保存视频文件。
    import os
    
    current_path = os.getcwd()
    out = cv.VideoWriter(current_path + '/output.avi', fourcc, 20.0, (640, 480))
    
    1. 添加异常处理代码来查看是否有任何错误发生,以帮助调试问题。
    if not out.isOpened():
        print("Cannot open output file")
        break
    

    请注意,文件的差异通常会导致结果不同。在不同环境下运行相同的代码可能会导致不同的结果。因此,要确保环境的一致性,尽量避免这种差异。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月2日