(Python)從零開始,簡單快速學機器仿人視覺Opencv---第六節:OpenCV圖像的一些基本操作

提前準備

使用工具Python3.5
使用包cv2,numpy

任務1 獲取並修改像素值

  讀取一副圖像,根據像素的行和列的座標獲取它的像素值,對於RGB圖像而言,返回RGB的值,對於灰度圖則返回灰度值

import cv2
import numpy
img = cv2.imread('45.jpg')
px=img[100,100]
print(px)
blue = img[100,100,0]
print(blue)
img[101,101]=[255,255,255]
print(img[101,101])

  numpy是經過優化了的進行快速矩陣運算的包,所以不推薦逐個獲取像素值並修改能矩陣運算就不要用循環。
  例如前5行的後3列,用numpy的array.item()和array.itemset()會更好。但是返回是標量,如果想獲得所有RGB的值,需要使用array.item()分割他們。
更好的方法是

import cv2
import numpy
img = cv2.imread('45.jpg')
print(img.item(10,10,2))
img.itemset((10,10,2),100)
print(img.item(10,10,2))

任務2 獲取圖像屬性

圖像屬性包括:行,列,通道,圖像數據類型,像素數目等

 成員1:
 img.shape 調用這個成員可以獲得圖像的形狀,返回值是一個包含行數,列數,通道數的元組

實例代碼:

import cv2
import numpy
img = cv2.imread('45.jpg')
print(img.shape)

  如果圖像是灰度圖,返回值僅有行數和列數,所以通過檢查返回值可以判斷是灰度圖還是彩色圖

成員2:
img.size 可以返回圖像的像素數目

實例代碼:

import cv2
import numpy
img = cv2.imread('45.jpg')
print(img.size)

像素的數目=行數 x 列數 x 通道數

成員3
img.dtype返回圖像的數據類型,在debug時很重要,因爲OpenCV-Python代碼中經常出現數據類型的不一致

實例代碼:

import cv2
import numpy
img = cv2.imread('45.jpg')
print(img.dtype)

總結

(本系列每週不定期更新,謝謝大家支持!)

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