欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python圖像處理之圖像算術(shù)與邏輯運(yùn)算詳解

 更新時(shí)間:2022年01月26日 11:50:33   作者:Eastmount  
這篇文章將詳細(xì)講解圖像算法運(yùn)算與邏輯運(yùn)算,包括圖像加法、圖像減法、圖像與運(yùn)算、圖像或運(yùn)算、圖像非運(yùn)算與圖像異或運(yùn)算。感興趣的可以了解一下

一.圖像加法運(yùn)算

圖像加法運(yùn)算主要有兩種方法。第一種是調(diào)用Numpy庫實(shí)現(xiàn),目標(biāo)圖像像素為兩張圖像的像素之和;第二種是通過OpenCV調(diào)用add()函數(shù)實(shí)現(xiàn)。第二種方法的函數(shù)原型如下:

dst = add(src1, src2[, dst[, mask[, dtype]]])

– src1表示第一張圖像的像素矩陣

– src2表示第二張圖像的像素矩陣

– dst表示輸出的圖像,必須和輸入圖像具有相同的大小和通道數(shù)

– mask表示可選操作掩碼(8位單通道數(shù)組),用于指定要更改的輸出數(shù)組的元素。

– dtype表示輸出數(shù)組的可選深度

注意,當(dāng)兩幅圖像的像素值相加結(jié)果小于等于255時(shí),則輸出圖像直接賦值該結(jié)果,如120+48賦值為168;如果相加值大于255,則輸出圖像的像素結(jié)果設(shè)置為255,如(255+64) 賦值為255。下面的代碼實(shí)現(xiàn)了圖像加法運(yùn)算。

#coding:utf-8
# By:Eastmount
import cv2 ?
import numpy as np ?
?
#讀取圖片
img = cv2.imread("luo.png")

#圖像各像素加100
m = np.ones(img.shape, dtype="uint8")*100

#OpenCV加法運(yùn)算
result = cv2.add(img, m)

#顯示圖像
cv2.imshow("original", img)
cv2.imshow("result", result)

#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()

輸出如圖4-1所示,左邊為“小珞珞”的原始圖像,右邊為像素值增加100像素后的圖像,輸出圖像顯示更偏白。

二.圖像減法運(yùn)算

圖像減法運(yùn)算主要調(diào)用subtract()函數(shù)實(shí)現(xiàn),其原型如下所示:

dst = subtract(src1, src2[, dst[, mask[, dtype]]])

– src1表示第一張圖像的像素矩陣

– src2表示第二張圖像的像素矩陣

– dst表示輸出的圖像,必須和輸入圖像具有相同的大小和通道數(shù)

– mask表示可選操作掩碼(8位單通道數(shù)組),用于指定要更改的輸出數(shù)組的元素。

– dtype表示輸出數(shù)組的可選深度

具體實(shí)現(xiàn)代碼如下所示:

#coding:utf-8
# By:Eastmount
import cv2 ?
import numpy as np ?
?
#讀取圖片?
img = cv2.imread("luo.png")

#圖像各像素減50
m = np.ones(img.shape, dtype="uint8")*50

#OpenCV減法運(yùn)算
result = cv2.subtract(img, m)

#顯示圖像
cv2.imshow("original", img)
cv2.imshow("result", result)

#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()

輸出如圖4-2所示,左邊為原始圖像,右邊為像素值減少50像素后的圖像,輸出圖像顯示更偏暗。

三.圖像與運(yùn)算

與運(yùn)算是計(jì)算機(jī)中一種基本的邏輯運(yùn)算方式,符號(hào)表示為“&”,其運(yùn)算規(guī)則為:

  • 0&0=0
  • 0&1=0
  • 1&0=0
  • 1&1=1

圖像的與運(yùn)算是指兩張圖像(灰度圖像或彩色圖像均可)的每個(gè)像素值進(jìn)行二進(jìn)制“與”操作,實(shí)現(xiàn)圖像裁剪。

dst = bitwise_and(src1, src2[, dst[, mask]])

– src1表示第一張圖像的像素矩陣

– src2表示第二張圖像的像素矩陣

– dst表示輸出的圖像,必須和輸入圖像具有相同的大小和通道數(shù)

– mask表示可選操作掩碼(8位單通道數(shù)組),用于指定要更改的輸出數(shù)組的元素。

下面代碼是通過圖像與運(yùn)算實(shí)現(xiàn)圖像剪裁的功能。

#coding:utf-8
# By:Eastmount
import cv2 ?
import numpy as np ?
?
#讀取圖片?
img = cv2.imread("luo.png", cv2.IMREAD_GRAYSCALE)

#獲取圖像寬和高
rows, cols = img.shape[:2]
print(rows, cols)

#畫圓形
circle = np.zeros((rows, cols), dtype="uint8")
cv2.circle(circle, (int(rows/2),int(cols/2)), 100, 255, -1)
print(circle.shape)
print(img.size, circle.size)

#OpenCV圖像與運(yùn)算
result = cv2.bitwise_and(img, circle)

#顯示圖像
cv2.imshow("original", img)
cv2.imshow("circle", circle)
cv2.imshow("result", result)

#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()

輸出如圖4-3所示,原始圖像與圓形進(jìn)行與運(yùn)算之后,提取了其中心輪廓。同時(shí)輸出圖像的形狀為377×326。注意,兩張圖像的大小和類型必須一致。

四.圖像或運(yùn)算

邏輯或運(yùn)算是指如果一個(gè)操作數(shù)或多個(gè)操作數(shù)為 true,則邏輯或運(yùn)算符返回布爾值 true;只有全部操作數(shù)為false,結(jié)果才是 false。圖像的或運(yùn)算是指兩張圖像(灰度圖像或彩色圖像均可)的每個(gè)像素值進(jìn)行二進(jìn)制“或”操作,實(shí)現(xiàn)圖像裁剪。其函數(shù)原型如下所示:

dst = bitwise_or(src1, src2[, dst[, mask]])

– src1表示第一張圖像的像素矩陣

– src2表示第二張圖像的像素矩陣

– dst表示輸出的圖像,必須和輸入圖像具有相同的大小和通道數(shù)

– mask表示可選操作掩碼(8位單通道數(shù)組),用于指定要更改的輸出數(shù)組的元素。

下面代碼是通過圖像或運(yùn)算實(shí)現(xiàn)圖像剪裁的功能。

#coding:utf-8
# By:Eastmount
import cv2 ?
import numpy as np ?
?
#讀取圖片?
img = cv2.imread("luo.png", cv2.IMREAD_GRAYSCALE)

#獲取圖像寬和高
rows, cols = img.shape[:2]

#畫圓形
circle = np.zeros((rows, cols), dtype="uint8")
cv2.circle(circle, (int(rows/2),int(cols/2)), 100, 255, -1)

#OpenCV圖像或運(yùn)算
result = cv2.bitwise_or(img, circle)

#顯示圖像
cv2.imshow("original", img)
cv2.imshow("circle", circle)
cv2.imshow("result", result)

#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()

輸出如圖4-4所示,原始圖像與圓形進(jìn)行或運(yùn)算之后,提取了圖像除中心原形之外的像素值。

五.圖像非運(yùn)算

圖像非運(yùn)算就是圖像的像素反色處理,它將原始圖像的黑色像素點(diǎn)轉(zhuǎn)換為白色像素點(diǎn),白色像素點(diǎn)則轉(zhuǎn)換為黑色像素點(diǎn),其函數(shù)原型如下:

dst = bitwise_not(src1, src2[, dst[, mask]])

– src1表示第一張圖像的像素矩陣

– src2表示第二張圖像的像素矩陣

– dst表示輸出的圖像,必須和輸入圖像具有相同的大小和通道數(shù)

– mask表示可選操作掩碼(8位單通道數(shù)組),用于指定要更改的輸出數(shù)組的元素。

圖像非運(yùn)算的實(shí)現(xiàn)代碼如下所示。

#coding:utf-8
import cv2 ?
import numpy as np ?
?
#讀取圖片?
img = cv2.imread("Lena.png", cv2.IMREAD_GRAYSCALE)

#OpenCV圖像非運(yùn)算
result = cv2.bitwise_not(img)

#顯示圖像
cv2.imshow("original", img)
cv2.imshow("result", result)

#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()

原始圖像非運(yùn)算之后輸出如圖4-5所示。

六.圖像異或運(yùn)算

邏輯異或運(yùn)算(xor)是一個(gè)數(shù)學(xué)運(yùn)算符,數(shù)學(xué)符號(hào)為“⊕”,計(jì)算機(jī)符號(hào)為“xor”,其運(yùn)算法則為:如果a、b兩個(gè)值不相同,則異或結(jié)果為1;如果a、b兩個(gè)值相同,異或結(jié)果為0。

圖像的異或運(yùn)算是指兩張圖像(灰度圖像或彩色圖像均可)的每個(gè)像素值進(jìn)行二進(jìn)制“異或”操作,實(shí)現(xiàn)圖像裁剪。其函數(shù)原型如下所示:

dst = bitwise_xor(src1, src2[, dst[, mask]])

– src1表示第一張圖像的像素矩陣

– src2表示第二張圖像的像素矩陣

– dst表示輸出的圖像,必須和輸入圖像具有相同的大小和通道數(shù)

– mask表示可選操作掩碼(8位單通道數(shù)組),用于指定要更改的輸出數(shù)組的元素。

圖像異或運(yùn)算的實(shí)現(xiàn)代碼如下所示。

#coding:utf-8
# By:Eastmount
import cv2 ?
import numpy as np ?
?
#讀取圖片?
img = cv2.imread("luo.png", cv2.IMREAD_GRAYSCALE)

#獲取圖像寬和高
rows, cols = img.shape[:2]

#畫圓形
circle = np.zeros((rows, cols), dtype="uint8")
cv2.circle(circle, (int(rows/2),int(cols/2)), 100, 255, -1)

#OpenCV圖像異或運(yùn)算
result = cv2.bitwise_xor(img, circle)

#顯示圖像
cv2.imshow("original", img)
cv2.imshow("circle", circle)
cv2.imshow("result", result)

#等待顯示
cv2.waitKey(0)
cv2.destroyAllWindows()

原始圖像與圓形進(jìn)行異或運(yùn)算之后輸出如圖4-6所示。

七.總結(jié)

本文詳細(xì)介紹了圖像處理的算術(shù)運(yùn)算與邏輯運(yùn)算,包括圖像加法、圖像減法、圖像與運(yùn)算、圖像或運(yùn)算、圖像非運(yùn)算與圖像異或運(yùn)算,并以“小珞珞”圖像為案例進(jìn)行講解,希望對您有所幫助。

到此這篇關(guān)于Python圖像處理之圖像算術(shù)與邏輯運(yùn)算詳解的文章就介紹到這了,更多相關(guān)Python圖像算術(shù) 邏輯運(yùn)算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python入門之井字棋小游戲

    python入門之井字棋小游戲

    這篇文章主要為大家詳細(xì)介紹了python入門學(xué)習(xí)之井字棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Python中的pass語句使用方法講解

    Python中的pass語句使用方法講解

    這篇文章主要介紹了Python中的pass語句使用方法講解,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • python編程簡單幾行代碼實(shí)現(xiàn)視頻轉(zhuǎn)換Gif示例

    python編程簡單幾行代碼實(shí)現(xiàn)視頻轉(zhuǎn)換Gif示例

    這篇文章主要為大家介紹了簡單使用幾行python代碼就可以實(shí)現(xiàn)將視頻轉(zhuǎn)換Gif的示例過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Python基于numpy模塊實(shí)現(xiàn)回歸預(yù)測

    Python基于numpy模塊實(shí)現(xiàn)回歸預(yù)測

    這篇文章主要介紹了Python基于numpy模塊實(shí)現(xiàn)回歸預(yù)測,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • pytorch單維篩選 相乘的案例

    pytorch單維篩選 相乘的案例

    這篇文章主要介紹了pytorch單維篩選 相乘的案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Python3爬蟲教程之利用Python實(shí)現(xiàn)發(fā)送天氣預(yù)報(bào)郵件

    Python3爬蟲教程之利用Python實(shí)現(xiàn)發(fā)送天氣預(yù)報(bào)郵件

    這篇文章主要給大家介紹了關(guān)于Python3爬蟲教程之利用Python實(shí)現(xiàn)發(fā)送天氣預(yù)報(bào)郵件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2018-12-12
  • python GUI庫圖形界面開發(fā)之PyQt5信號(hào)與槽的高級使用技巧(自定義信號(hào)與槽)詳解與實(shí)例

    python GUI庫圖形界面開發(fā)之PyQt5信號(hào)與槽的高級使用技巧(自定義信號(hào)與槽)詳解與實(shí)例

    這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5信號(hào)與槽的高級知識(shí)(自定義信號(hào)與槽)詳解與實(shí)例,需要的朋友可以參考下
    2020-03-03
  • python中使用正則表達(dá)式的連接符示例代碼

    python中使用正則表達(dá)式的連接符示例代碼

    在正則表達(dá)式中,匹配數(shù)字或者英文字母的書寫非常不方便。因此,正則表達(dá)式引入了連接符“-”來定義字符的范圍,下面這篇文章主要給大家介紹了關(guān)于python中如何使用正則表達(dá)式的連接符的相關(guān)資料,需要的朋友可以參考下。
    2017-10-10
  • 深入理解pytorch庫的dockerfile

    深入理解pytorch庫的dockerfile

    這篇文章主要介紹了pytorch庫的dockerfile,主要包括dockerfile命令,使用指令的注意點(diǎn)及存在的一些問題,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • selenium學(xué)習(xí)教程之定位以及切換frame(iframe)

    selenium學(xué)習(xí)教程之定位以及切換frame(iframe)

    這篇文章主要給大家介紹了關(guān)于selenium學(xué)習(xí)教程之定位以及切換frame(iframe)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論