計算機視覺基礎系列(python與opencv的操作與運用)(三)--像素操作

每個圖片可以看作很多個有顏色的小方塊組合而成的,而每一個像素點的小方塊的顏色,可以看作是三個顏色RGB進行合成的,顏色深度又是指的是8bit,即0-255,圖片的寬高又是指的是圖片在橫軸和縱軸分別有多少個像素,圖片大小又是從何而來的呢:

1.14M = 720(長)* 547(寬)*3*8bit/8  (B) = 1.14M

而在png圖片中可能還存在着第四個通道,即爲圖片的顏色透明度alpha通道。而在opencv中讀取的像素的值應該是b,g,r反過來的,這個很重要。

在圖片的像素操作中,我們可以把圖片放在一個座標系中,橫軸代表着圖片的長,縱軸代表着圖片的寬,然後如果說取(100,90)這個點的座標的像素值,則是代表取出來的是橫着數第100個,豎着數90個的那個點的像素值。這裏插入代碼段更好理解:

import cv2
img = cv2.imread('1.png', 1)
(b, g, r) = img[100, 90]            # 讀取出來的像素值一般是放在一個元組裏面的,這裏取100,90這個點
print(b, g, r)                      # 打印b,g,r對應的值

接下來我們想對圖片進行像素的寫入:

import cv2
img = cv2.imread('1.png', 1)
(b, g, r) = img[100, 90]            # 讀取出來的像素值一般是放在一個元組裏面的,這裏取100,90這個點
print(b, g, r)                      # 打印b,g,r對應的值
# 從圖像的第30行300列開始到第110行,100列結束
for i in range(1,100):              # 對像素的逐個操作,這裏使用循環遍歷到每一個想操作的像素點
    img[30+i, 300] = (0, 0, 0)
cv2.imshow('image', img)
cv2.waitKey(0)

上圖可以看到畫出了一條黑色的線段

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