OpenCV python 畫素運算

2021-09-24 02:43:10 字數 3508 閱讀 7583

一、數值運算(調節亮度,調整對比度)(2)相減:subtract()

(3)相乘:divide()

(4)相除:multiply()

import cv2 as cv

#數值運算:加減乘除

def shu_image(src11, src22):

src = cv.add(src11, src22)#加

cv.imshow("add", src)

src = cv.subtract(src11, src22)#減

cv.imshow("subtract", src)

src = cv.divide(src11, src22)#乘

cv.imshow("divide", src)

src = cv.multiply(src11, src22)#除

cv.imshow("multiply", src)

src1 = cv.imread("d:/images/demo1.png")

src2 = cv.imread("d:/images/demo2.png")

cv.imshow("11", src1)

cv.imshow("22", src2)

shu_image(src1, src2)

cv.waitkey(0)

cv.destroyallwindows()

(5)獲取各個通道的均值

m = cv.mean(image)

print(m) #都過小則偏暗,單個過大的通道可認為是主色彩

(6)獲取每個影象的方差

m,dev = cv.meanstddev(image)    #返回均值和方差,分別對應3個通道

print(m)

print(dev) 過大說明畫素間的差異就大

若dev小,則說明的色彩差異(對比性)是較小的,若整張同色,則方差是0,均值是0,可以用來檢視掃瞄器中是否有資訊丟失(方差小於乙個預值,則失效,丟棄)

二、邏輯運算(遮罩層控制)與:bitwise_add() (類似於遮罩,當我們使用白色遮罩)

或:bitwise_or()

異或:bitwise_xor()

import cv2 as cv  

#邏輯運算:與或非的操作

def luo_image(src11, src22):

src = cv.bitwise_and(src11, src22) # 兩張同一位置的色素兩個值均不為零的才會有輸出

cv.imshow("與", src)

src = cv.bitwise_or(src11, src22) # 兩張同一位置的色素兩個值不全為零的才會有輸出

cv.imshow("或", src)

src = cv.bitwise_not(src11) # 對一張操作 取反

cv.imshow("非", src)

src = cv.bitwise_xor(src11, src22) # 兩張同一位置的色素兩個值有乙個為零,另乙個不為零才會輸出

cv.imshow("異或", src)

src1 = cv.imread("d:/images/demo1.png")

src2 = cv.imread("d:/images/demo2.png")

cv.imshow("11", src1)

cv.imshow("22", src2)

luo_image(src1, src2)

cv.waitkey(0)

cv.destroyallwindows()

import cv2 as cv

import numpy as np

def extrace_object_demo(): #追蹤有顏色的物件

capture = cv.videocapture("d:/vcprojects/images/video.mp4")

while(true):

ret, frame = capture.read() #frame是每一幀影象,ret是返回值,為0是表示影象讀取完畢

if ret == false:

break;

hsv = cv.cvtcolor(frame, cv.color_bgr2hsv)

lower_hsv = np.array([37, 43, 46])

upper_hsv = np.array([77, 255, 255])

mask = cv.inrange(hsv, lowerb=lower_hsv, upperb=upper_hsv) #該函式輸出的dst是一幅二值化之後的影象(是將滿足我們的影象物件所有位都設為1白色,不滿足設定為0黑色)

dst = cv.bitwise_and(frame, frame, mask=mask) #提取出目標物件,然後再與原圖bitwise_and,就會把目標物件提取出來

cv.imshow("video", frame)

cv.imshow("mask", mask)

cv.imshow("dst", dst)

c = cv.waitkey(40)

if c == 27: #退出

break

3,調整亮度和對比度 addweighted

def contrast_brightness_demo(image,c,b):

''':param image: 原圖

:param c: 對比度 是將畫素乘與c,原來2,4---->4, 8 差距由2--->4導致對比增強

:param b: 亮度 是將每個畫素點加上相關亮度

:return:

'''h,w,ch = image.shape

blank = np.zeros([h,w,ch],image.dtype)  #建立乙個全黑影象

dst = cv.addweighted(image,c,blank,1-c,b)

cv.imshow("dst",dst)

說明

基本原理:兩張合成。dst = src1alpha+src2beta+gamma

對比度:製造乙個全黑(畫素為0),通過權重相加,乘以倍數就會使畫素之間的差異性成倍增大,對比度提公升

亮度:+畫素值,讓畫素往255靠近,(255,255,255)是白色,越來越亮

1、第1個引數,輸入1,

2、第2個引數,1的融合比例

3、第3個引數,輸入2

4、第4個引數,2的融合比例

5、第5個引數,偏差

6、第6個引數,輸出

畫素計算 (OpenCV Python)

1.畫素的算術運算 輸入影象的大小,和型別要完全一致 import cv2 as cv defadd demo m1,m2 畫素得到加運算 dst cv.add m1,m2 cv.imshow add demo dst defsubtract demo m1,m2 畫素的減運算 dst cv.sub...

opencv python筆記 畫素理解

長 height 寬 weight 通道數 channel 所以計算機中是乙個三維的矩陣 1 美術三原色 美術教科書講的是繪畫顏料的使用,色彩調色是紅 黃 藍為三原色。2 色光三原色 人的眼睛是根據所看見的光的波長來識別顏色的。可見光譜中的大部分顏色可以由三種基本色光按不同的比例混合而成,這三種基本...

opencv python入門之二(畫素操作)

我們有時會對影象重某乙個畫素進行操作,一種方法是用opencv進行操作,另一種方法是用python中的numpy庫進行操作。首先要分享的是用opencv中的方法進行操作 讀取獲取某一點畫素值 重新設定畫素值 pix img 100,200,0 獲取 100,200 處b通道的畫素值 注意img後是中...