在使用 imread 函数读取 jpg 文件时,是否有任何可能的理由在 opencv 中遇到一些困难

Is there any possible reason to have some difficulties with jpg files in opencv while using imread function to read them?

本文关键字:opencv 理由 遇到 任何可 函数 imread 读取 jpg 文件 是否      更新时间:2023-10-16

最近,我在python中使用opencv。

正如我注意到的,当我想在 python 中导入 cv2 模块时,我需要使用以下方法手动将 cv2.so 文件路径添加到系统路径中:

sys.path.append('/path/to/cv.so')

Howewer,当我想读取 ipython 笔记本中的 jpg 文件时,它失败了:

import sys
import numpy as np
import os
sys.path.append("/usr/local/lib1/python2.7/site-packages")
import cv2
im1=cv2.imread('pic1.png')
print im1.shape
#output: (512, 512, 3)
im2=cv2.imread('pic1.jpg')
print im2.shape
#output:
-------------------------------------------------------------------------
AttributeError                         Traceback (most recent call last)
<ipython-input-8-2d36ac00eca0> in <module>()
----> 1 print im2.shape
AttributeError: 'NoneType' object has no attribute 'shape'

根据我之前的问题,我多次重建opencv。

我在某处读到这可能是一些依赖问题的结果。但是我的系统上有两个软件包(libjpeg 和 libjaspe):

print cv2.getBuildInformation()
Media I/O: 
ZLib:                        /lib64/libz.so (ver 1.2.8)
JPEG:                        /lib64/libjpeg.so (ver 80)
WEBP:                        /lib64/libwebp.so (ver encoder: 0x0202)
PNG:                         /lib64/libpng.so (ver 1.6.17)
TIFF:                        /lib64/libtiff.so (ver 42 - 4.0.2)
JPEG 2000:                   /lib64/libjasper.so (ver 1.900.1)

知道吗?

经过大量努力,我意识到解决方案是添加:

PYTHONPATH=""
export PYTHONPATH
PATH=/usr/bin:/usr/local/bin
export PATH

在/home/.bashrc 文件的末尾(使它们永久化),在从终端运行 PythoniPython 笔记本之前。

注意:仅使用来自yum(dnf)存储库(当然适用于Fedora用户!)和python 2.7opencv-python.x86_64(基于您的机器架构)。

不要从其网站下载opencv。我想,这会带来一些依赖性问题。