6 畫素運算 算術運算和邏輯運算

2021-10-12 19:36:59 字數 3272 閱讀 7934

倆張進行算術運算的前提是倆張的大小是一樣的。

引數說明:

src1, src2:需要相加的兩副大小和通道數相等的影象或一副影象和乙個標量(標量即單一的數值)

dst:可選引數,輸出結果儲存的變數,預設值為none,如果為非none,輸出影象儲存到dst對應實參中,其大小和通道數與輸入影象相同,影象的深度(即影象畫素的位數)由dtype引數或輸入影象確認

mask:影象掩膜,可選引數,為8位單通道的灰度影象,用於指定要更改的輸出影象陣列的元素,即輸出影象畫素只有mask對應位置元素不為0的部分才輸出,否則該位置畫素的所有通道分量都設定為0

dtype:可選引數,輸出影象陣列的深度,即影象單個畫素值的位數(如rgb用三個位元組表示,則為24位)。

作用:一種是可用於減少甚至消除影象採集中混入的雜訊,由於影象各點的採集雜訊是互不相關的,且雜訊具有零均值的統計特性,因此可以對影象進行多次採集形成多副影象,然後將這多副影象相加再取平均值,就可以實現噪點的消除;另一種是用來做特效,把多幅影象疊加在一起,再進一步進行處理。

說明:大於255的畫素值按照飽和運算模式保留為255.

引數和cv2.add()相同,唯一不同的是,小於0的會保留為0.

作用:影象的減法通常用於查詢影象的差異;當然也可以用在影象的特殊處理上。

引數多啦個scale,則計算過程為 src1*scale/src2。

用途:兩個影象相除可以用於糾正由於照明或感測器的非均勻性造成的影象灰度陰影,還可用於產生比率影象,也可以用於發現二者的差異。

引數和cv2.divide()相同。

2個引數: 1.image 2. mask :mask是與iamge一樣大小的矩陣,其中的數值為0或者1,為1的地方,計算出image中所有元素的均值,為0 的地方,不計算.

作用:得到各個通道的均值

引數如下:1. src:輸入矩陣,這個矩陣應該是1-4通道的 2. mean:輸出引數,計算均值 3. stddev:輸出引數,計算標準差 4. mask:可選引數

作用:計算各個通道的均值和標準差。標準差越大,說明影象間的畫素差異就越大。

作用:對不同通道相同位置的二進位制值進行"與"運算(對應位置都為1,結果才為1).

作用:對不同通道相同位置的二進位制值進行"或"運算(對應位置只要有乙個為1,結果就為1).

作用:按位取反.

引數說明如下:

src1,第乙個原陣列.

alpha,第乙個陣列元素權重

src2第二個原陣列

beta,第二個陣列元素權重

gamma,圖1與圖2作和後新增的數值。不要太大,不然一片白。總和等於255以上就是純白色了。

dst,輸出

作用:調節影象的對比度(alpha, beta)和亮度(gamma)

import cv2 as cv

import numpy as np

# 對影象畫素級別的加減乘除

def add_demo(m1, m2):

dst = cv.add(m1, m2)

cv.imshow("add_demo", dst)

def subtract_demo(m1, m2):

dst = cv.subtract(m1, m2)

cv.imshow("subtract_demo", dst)

def divide_demo(m1, m2):

dst = cv.divide(m1, m2)

cv.imshow("divide_demo", dst)

def multiply_demo(m1, m2):

dst = cv.multiply(m1, m2)

cv.imshow("multiply_demo", dst)

# 影象的邏輯運算,:and,or,not,xor

# 影象混合,c, 1-c為這兩張的權重

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

cv.imshow("contrast_brightness_demo", dst)

# 對**畫素做均值方差

def others(m1, m2):

# m1 = cv.mean(m1)

# m2 = cv.mean(m2)

# print(m1)

# print(m2)

mean1, dev1 = cv.meanstddev(m1)

print("均值:",mean1,"方差:", dev1)

if __name__ == '__main__':

print("----------hello world!----------")

src1 = cv.imread("../images/01.jpg") # 倆張大小是相同

# cv.namedwindow("image1", cv.window_autosize) # 建立視窗, 視窗尺寸自動調整

指標運算 算術運算 關係運算

是不是對指標的任何運算都是合法的呢?答案是它可以執行某些運算,但並非所有的運算都合法。除了加法運算之外,你還可以對指標執行一些其他運算,但並不是很多。指標加上乙個整數的結果是另乙個指標。問題是,它指向 如果你將乙個字元指標加1,運算結果產生的指標指向記憶體中的下乙個字元。float佔據的記憶體空間不...

指標運算 算術運算 關係運算

是不是對指標的任何運算都是合法的呢?答案是它可以執行某些運算,但並非所有的運算都合法。除了加法運算之外,你還可以對指標執行一些其他運算,但並不是很多。指標加上乙個整數的結果是另乙個指標。問題是,它指向 如果你將乙個字元指標加1,運算結果產生的指標指向記憶體中的下乙個字元。float佔據的記憶體空間不...

指標運算 算術運算 關係運算

c c 允許將指標和整數進行相加操作,加1的結果就是等於原來的位址值加上指向物件占用的位元組數 如 int p int malloc sizeof int 5 p 1 表示p指向記憶體位址加4個位元組 兩個指標如果指向同乙個陣列,則兩個指標進行算術運算才有意義,即 int p int malloc ...