之前使用python写代码的时候,习惯是使用opencv的python接口。也就是 import cv2
然后尽情地使用 cv2
里面有的所有东西。
但是前几天遇到服务器上使用 cv2.VideoCapture()
函数无法读取某些视频(原因大概是因为codec造成的),这个问题暂时还没有解决,我转而使用了另外一种替代的方法,也就是 imageio
模块:
import imageio # 使用sudo pip install imageio 安装
imageio.get_reader("your/video/director.xxx")
具体的使用可以参见:link
借这个机会,也尝试了一些python读入图片的方式,分别为:
使用opencv库:
import cv2 cv_im = cv2.imread("img/path.jpg")
使用PIL库中的Image模块:
from PIL import Image pil_im = Image.open("img/path.jpg")
使用imageio模块:
import imageio io_im = imageio.imread("img/path.jpg")
三者的读入的 im
的数据类型分别为:
<type 'numpy.ndarray'>
<type 'instance'>
<class 'imageio.core.util.Image'>
其中,io_im
可以直接使用 cv2.imshow()
函数显示,io_im
和 pil_im
都可以通过 np.array()
( import numpy as np
) 函数转换成 numpy.adarray
,但是有一点需要注意的是:
cv_im
颜色通道顺序是bgr,而io_im
和pil_im
是rgb,所以使用cv2.imshow()
进行显示的时候,应该先统一颜色通道的顺序。
也就是说,无论用哪一种方式进行图片的读取,都可以使用 np.array()
进行转化,然后使用 cv2
的相关函数进行处理。