您好,登錄后才能下訂單哦!
本文實例為大家分享了Python OpenCV圖像像素點操作的具體代碼,供大家參考,具體內(nèi)容如下
0x01. 像素
有兩種直接操作圖片像素點的方法:
第一種辦法就是將一張圖片看成一個多維的list,例如對于一張圖片im,想要操作第四行第四列的像素點就直接 im[3,3] 就可以獲取到這個點的RGB值。
第二種就是使用 OpenCV 提供的 Get1D、 Get2D 等函數(shù)。
推薦使用第一種辦法吧,畢竟簡單。
0x02. 獲取行和列像素
有一下四個函數(shù):
0x03. 批量處理
需要批量處理所有的像素點的時候,只需要使用for循環(huán)迭代處理就可以了:
import cv2.cv as cv im = cv.LoadImage("img/lena.jpg") for i in range(im.height): for j in range(im.width): im[i,j] # 這里可以處理每個像素點
還有一種迭代處理的方式是使用 LineIterator,不過在聲明 LineIterator 的時候需要制定處理像素點的開始點和結(jié)束點。
import cv2.cv as cv im = cv.LoadImage("img/lena.jpg") li = cv.InitLineIterator(im, (0, 0), (im.rows, im.cols)) #So loop the entire matrix for (r, g, b) in li: # 這里可以對每個像素點的 r g b 進(jìn)行處理
娛樂一下, 隨機(jī)獲取 5000 個像素點,然后把顏色換成一個隨機(jī)的值(salt):
import cv2.cv as cv import random # 這里也可以使用 Get2D/Set2D 來加載圖片 im = cv.LoadImage("img/lena.jpg") for k in range(5000): #Create 5000 noisy pixels i = random.randint(0,im.height-1) j = random.randint(0,im.width-1) color = (random.randrange(256),random.randrange(256),random.randrange(256)) im[i,j] = color cv.ShowImage("Noize", im) cv.WaitKey(0)
效果圖:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。