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

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

最近在python.

中使用opencv

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

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

然而,当我想读取 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'

基于my previous question,我重建opencv几次

我读到 somewhere 这可能是某些依赖性问题的结果。但是我的系统上有两个包(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 notebook 之前。

注意:只使用opencv-python.x86_64(根据你的机器架构) yum (dnf) 存储库(当然是针对 fedora 用户!)和 python 2.7.

不要website 下载 opencv。我猜这会造成一些依赖问题。