
每個像素都由顏色組成,常見的顏色存儲格式有RGB和bgr兩種,雖然兩者都是由紅色通道、綠色通道和藍色通道組成,但是順序不同。OpenCV采用的顏色存儲格式是bgr。需要注意的是,灰度圖片是單一顏色通道。
通過mread()方法獲取的圖像數據是一個矩陣,我們可以將圖像看成一個多維的list,其中第一維和第二維分別表示圖像的寬高,第三維則是像素內容。明白這一點后,我們就可以通過操作list來獲取指定位置的像素點。
import cv2 img = cv2.imread("1.png") print(img) print(img[0,0]) #獲取第一行第一列的像素--獲取指定像素
#參數1 是列坐標 參數2 是橫坐標
print('第一列數據') print(img[:,0]) #獲取第一列數據 print('第一行數據') print(img[0,:]) #第一行數據 #可以看到,每個像素點都是由三個數組成的元組,這三個數分別表示bgr的藍色通道數值、綠色通道數值和紅色通道數值
像素是整個圖像的最小單位,拿到圖像的像素后,我們就可以通過修改像素來對圖像“為所欲為”了
import cv2 img = cv2.imread("1.png") i=img[100,100] (b,g,r)=i print(i,b,g,r) for x in range(0,101): #從(100,100)到(200,100)畫一條豎直的藍線 img[100+x,100]=(250,0,0) #指定點修改像素值 cv2.imshow("new window", img) cv2.waitKey(0)
效果:


