OpenCV 是一个在影像与图像处理上非常实用且方便的一个工具,其庞大程度已经可以算是一个平台,支援了各式各样的编程语言,当然 Python 也是包含其中的“之一”,这个包集成了许多当下流行的图像处理算法,成为了他们呼叫函数的其中一个部分,不用我们用户单独的去设置函数细节,是个非常暖心的包。
使用了这个模块做图像处理一段时间了,总是只有看到最后的结果与呼叫的函数对应功能,渐渐的这些处理过程被埋在了 opencv 处理的背后,为了彻底亲身经历一遍图像处理的过程,我 ps 了一张高 4 pixels,宽 3 pixels 的图片(如下面图片旁边的那一“点”),由于原图太小了,在其“点”的左边放大显示像素的样貌:
当使用了 cv2.imread('path', 1) 把图片读入 opencv 里面之后,代码与结果如下:
>>> import cv2 >>> path = '/home/abc/Desktop/opencv_example.png' >>> img = cv2.imread(path, 1) >>> img array([[[ 40, 180, 200], [255, 255, 255], [250, 180, 100]], [[150, 50, 70], [200, 120, 80], [140, 40, 200]], [[140, 200, 200], [ 0, 0, 0], [ 30, 200, 250]], [[ 90, 160, 220], [ 0, 40, 200], [ 20, 220, 80]]], dtype=uint8) >>> img.shape (4, 3, 3) >>> type(img) <class 'numpy.ndarray'> >>> img.size 36 >>> img.dtype dtype('uint8')缩小图片之后导入 opencv 里面的结果简直是一目了然了!原来在 array 里面的样子就是把图片翻了一个角度侧着看的,而从图里面对应到的颜色看来,也就可以知道 opencv 在排部图像颜色顺序上采用的是 BGR 的方法(跟 matplotlib 这个包在操控图片是偶的顺序 RGB 是不同的,需要被转换)