程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Opencv中的圖像相加,相減,相除,相乘(python實現)

編輯:Python

文章目錄

    • 1.相加
    • 2.減法
    • 3.乘法
    • 4.除法

1.相加

代碼實戰

import os
import cv2
import numpy as np
#讀取圖片和縮放圖片
lenna=cv2.imread('images/lenna.png')
lenna=cv2.resize(src=lenna,dsize=(450,450))
#創建相同尺寸的圖片
npimg=np.ones(shape=(lenna.shape[0],lenna.shape[1],lenna.shape[2]),dtype=np.uint8)*100
#兩張圖片進行與運算
dst=cv2.add(src1=lenna,src2=npimg)
#顯示圖片
cv2.imshow('lenna',lenna)
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == '__main__':
print('Pycharm')


可以看到最終得到的圖類似曝光。


2.減法

def Subtract():
# 讀取圖片和縮放圖片
lenna = cv2.imread('images/lenna.png')
lenna = cv2.resize(src=lenna, dsize=(450, 450))
# 創建相同尺寸的圖片
npimg = np.ones(shape=(lenna.shape[0], lenna.shape[1], lenna.shape[2]), dtype=np.uint8) * 100
# 首先兩張圖片進行加法運算
dst = cv2.add(src1=lenna, src2=npimg)
#將進行加法之後的圖像再進行減法操作,還原回原圖
original=cv2.subtract(src1=dst,src2=npimg)
print("原圖中最大像素值: {}".format(lenna.max()))
print('相加之後的最大像素值: {}'.format(dst.max()))
print('相減之後的最大像素值: {}'.format(original.max()))
# 顯示圖片
cv2.imshow('lenna', lenna)
cv2.imshow('dst', dst)
cv2.imshow('original',original)
cv2.waitKey(0)
cv2.destroyAllWindows()


print("原圖中最大像素值: {}".format(lenna.max()))
print('相加之後的最大像素值: {}'.format(dst.max()))
print('相減之後的最大像素值: {}'.format(original.max()))

可以看到原圖中的最大像素值為255,而相加之後的最大像素值肯定也為255;但是假設原圖中有一個像素值為160的,首先加上100之後,那麼像素值變為255(因為超過了255,所以只能為255),那麼在相減的時候,這個像素值變為了155,和原來的160相比減小了,所以就算原來的圖先加後減,圖像一般也會變的稍微暗一點。


3.乘法

def mutilpImg():
# 讀取圖片和縮放圖片
lenna = cv2.imread('images/lenna.png')
lenna = cv2.resize(src=lenna, dsize=(450, 450))
# 創建相同尺寸的圖片
npimg = np.ones(shape=(lenna.shape[0], lenna.shape[1], lenna.shape[2]), dtype=np.uint8) * 100
#進行乘積
dst=cv2.multiply(src1=lenna,src2=npimg)
# 顯示圖片
cv2.imshow('lenna', lenna)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

為什麼輸出的為大部分為白色了,是因為相乘之後很多像素值都大於了255,所以最後的結果就是255,也就是導致圖像很多地方都是白色的。


4.除法

def DividImg():
# 讀取圖片和縮放圖片
lenna = cv2.imread('images/lenna.png')
lenna = cv2.resize(src=lenna, dsize=(450, 450))
# 創建相同尺寸的圖片
npimg = np.ones(shape=(lenna.shape[0], lenna.shape[1], lenna.shape[2]), dtype=np.uint8) * 100
# 進行乘積
dst = cv2.divide(src1=lenna, src2=npimg)
# 顯示圖片
cv2.imshow('lenna', lenna)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

print(“原圖中最大像素值: {}”.format(lenna.max()))
print(“除法之後最大像素值: {}”.format(dst.max()))

可以看到原圖中的最大像素值為255,而原圖中所有的像素值都除了100之後,那麼最後的結果只能是<=3,所以看起來是黑色的。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved