Python OpenCV處理圖像之圖像像素點操作
本文實例為大家分享了Python OpenCV圖像像素點操作的具體代碼,供大家參考,具體內(nèi)容如下
0x01. 像素
有兩種直接操作圖片像素點的方法:
第一種辦法就是將一張圖片看成一個多維的list,例如對于一張圖片im,想要操作第四行第四列的像素點就直接 im[3,3] 就可以獲取到這個點的RGB值。
第二種就是使用 OpenCV 提供的 Get1D、 Get2D 等函數(shù)。
推薦使用第一種辦法吧,畢竟簡單。
0x02. 獲取行和列像素
有一下四個函數(shù):
- cv.GetCol(im, 0): 返回第一列的像素
- cv GetCols(im, 0, 10): 返回前 10 列
- cv.GetRow(im, 0): 返回第一行
- cv.GetRows(im, 0, 10): 返回前 10 行
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 進行處理
娛樂一下, 隨機獲取 5000 個像素點,然后把顏色換成一個隨機的值(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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實現(xiàn)刪除列表中空字符串元素的兩種方法
本文主要介紹了python實現(xiàn)刪除列表中空字符串元素的兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-03-03
Matplotlib之解決plt.savefig()保存多張圖片有重疊的問題
這篇文章主要介紹了Matplotlib之解決plt.savefig()保存多張圖片有重疊的問題,具有很好的參考價值,希望對大家有所幫助,2023-09-09
python文件轉(zhuǎn)為exe文件的方法及用法詳解
py2exe是一個將python腳本轉(zhuǎn)換成windows上的可獨立執(zhí)行的可執(zhí)行程序(*.exe)的工具,這樣,你就可以不用裝python而在windows系統(tǒng)上運行這個可執(zhí)行程序。本文重點給大家介紹python文件轉(zhuǎn)為exe文件的方法,感興趣的朋友跟隨小編一起看看吧2019-07-07
Python實現(xiàn)圖片格式轉(zhuǎn)換小程序
這篇文章主要為大家詳細介紹了Python實現(xiàn)圖片格式轉(zhuǎn)換小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08
python3 tkinter實現(xiàn)點擊一個按鈕跳出另一個窗口的方法
今天小編就為大家分享一篇python3 tkinter實現(xiàn)點擊一個按鈕跳出另一個窗口的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06

