python - 在 cv2 中检测/避免 "Premature end of JPEG"- python

标签 python opencv

我有一个图像流从外部程序(无法控制)保存到一个文件中(比如每 2 秒一次)。当我尝试读取该图像时,有时会在写入时读取它,因此我从 OpenCV 收到有关 JPEG 结束的消息。有没有办法测试文件是否坏了,如果坏了等一会再尝试重新读取?

谢谢...

最佳答案

我对这个“错误”做了一些研究,它似乎是 C 中的一个警告,python 无法正确检测到。这是一个非常棘手的问题,并且因为图像不完整而发生。检测图像是否正确结束(带有 b'\xff\xd9' 字符)似乎有效:

with open(os.path.join(path, file), 'rb') as f:
    check_chars = f.read()[-2:]
if check_chars != b'\xff\xd9':
    print('Not complete image')
else:
    imrgb = cv2.imread(os.path.join(path, file), 1)

关于python - 在 cv2 中检测/避免 "Premature end of JPEG"- python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33548956/

相关文章:

python - python 中带有箭头的简单 2d 表面?

python - 根据条件将一列拆分为多列

python - 如何在 python 中迭代条件检查?

c++ - 获取 Leptonica 中 Pix 类型图像的感兴趣区域 (ROI)

c++ - OpenCV3.4.2:无法读取文件imread和cvLoadImage

c++ - 用于 C++ MatND 的 OpenCV cvGetMinMaxHistValue

matlab - SVD 在 Matlab 和 OpenCV 中计算不同的结果

c++ - 在 Raspberry Pi 2 上使用 TBB 编译 OpenCV

python - 无法使用发布请求进入下一页

python - Ubuntu:_tkinter.TclError:没有显示名称,也没有 $DISPLAY 环境变量