Python 調用OpenCV讀取(操作)圖片時,圖片的數據的組織形式

  OpenCV的Python API基於Numpy庫,其核心數據結構爲ndarray。圖像數據一般分爲單通道(灰度圖,二值圖等)和三通道(RGB顏色模式圖等),這裏對單通道和三通道的圖像數據結構進行總結。

1.單通道圖片

  單通道的圖片使用二維矩陣(數組)表示,python中二維矩陣(數組)使用二維的ndarray構造。

1.1.構造python的二維矩陣(數組)

  構造一個二維矩陣(數組),首先要確定矩陣的行數(高)和列數(寬)以及數據類型,比如unit8、int32和float32等。
  1)構造3行2列的全是1的uint8二維矩陣,代碼如下所示:

# -*- coding: utf-8 -*-
import numpy as np
matrix=np.ones((3,2),np.uint8)#定義3行2列的全爲1的矩陣
print(matrix)

  程序運行結果爲:
在這裏插入圖片描述
  2)構造2行4列全爲0的float32二維矩陣,代碼如下:

# -*- coding: utf-8 -*-
import numpy as np
matrix=np.zeros((2,4),np.float32)#定義2行4列的全爲0的矩陣
print(matrix)

  程序運行結果爲:
在這裏插入圖片描述

1.2.二維矩陣表示單通道圖片

  先使用OpenCV讀取並打印高寬爲11*17像素的圖片,代碼如下:

# -*- coding: utf-8 -*-
import cv2
img=cv2.imread('2.png',0)#返回灰度圖像
print(img)               #打印代表灰度圖像的2維矩陣

  程序運行結果爲:
在這裏插入圖片描述

2.三通道圖片

  三通道的圖片使用三維矩陣(數組)表示,python中三維矩陣(數組)使用三維的ndarray構造。

2.1.構造python的三維矩陣(數組)

  構造一個三維矩陣(數組),首先要確定矩陣的行數(高)和列數(寬)以及數據類型,比如unit8、int32和float32等。三維數組可以理解成每一個元素都是二維數組,例如初始化一個3*2*2的int8數組(可以看成包含3個2*2的二維矩陣),代碼如下:

# -*- coding: utf-8 -*-
import numpy as np
m=np.array([
        [[1,2],[3,4]],
        [[1,2],[5,6]],
        [[3,4],[7,8]]
        ],np.int8)
print(m)

  程序運行結果爲:
在這裏插入圖片描述

2.2.三維矩陣表示三通道圖片

  三維ndarray表示h*w大小圖像的示意圖如下:
在這裏插入圖片描述
  使用OpenCV讀取並打印高寬爲3*4三通道的RGB彩色圖片,代碼如下:

# -*- coding: utf-8 -*-
import cv2
img=cv2.imread('3.png',1)#返回RGB彩色圖像
print(img)               #打印代表灰度圖像的3維矩陣

  程序運行結果爲:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章