python-opencv-圖像顏色反轉


圖像是由一個一個的像素組成的,每個像素又是由一個個不同的顏色值(OpenCV中為bgr模式)組成,其中每個顏色通道的值均為0-255。 

所謂圖像的顏色反轉,就是將每個顏色通道值用255減去原通道值,得到一個新的顏色通道值,再重新組合成新的bgr顏色通道產生新像素而形成新的圖像。舉個極端的例子,比如一個純白色像素點的值為(255,255,255),它經過顏色反轉變換后形成的新的像素點為(0,0,0),也就是變成了純黑色像素點。

 

灰度圖的圖像顏色反轉:

import cv2
import numpy as np

img = cv2.imread("3.jpg",0)  #讀取一張圖片,灰度
height,width=img.shape
dst=np.zeros((height,width,1),np.uint8)
for i in range(height):
    for j in range(width):
        dst[i,j]=255-img[i,j]

cv2.imshow('img',img)
cv2.imshow('dst',dst)
cv2.waitKey()  #窗口等待任意鍵盤按鍵輸入,0為一直等待,其他數字為毫秒數

效果圖:

 

bgr圖像的圖像顏色反轉:

對於bgr圖像而言,我們需要對b(藍色)、g(綠色)、r(紅色)三個顏色通道做處理。首先,我們仍然使用imread()函數讀取原圖像數據並使用shape屬性獲取相關圖像信息,然后開始遍歷像素點,與灰度圖不同的是,我們需要對b、g、r三個顏色通道同時做用255減去當前顏色通道值的處理,然后再組成新的bgr值賦值給像素點,從而實現bgr圖像的圖像顏色反轉。

import cv2
import numpy as np

img = cv2.imread("2013.jpg",1)  #讀取一張圖片,彩色
cha=img.shape
height,width,deep=cha
dst=np.zeros((height,width,3),np.uint8)
for i in range(height):  #色彩反轉
    for j in range(width):
        b,g,r=img[i,j]
        dst[i,j]=(255-b,255-g,255-r)
cv2.imshow('img',img)
cv2.imshow('dst',dst)
cv2.waitKey()  

效果圖:

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM