栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Opencv中的图像相加,相减,相除,相乘(python实现)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Opencv中的图像相加,相减,相除,相乘(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,所以看起来是黑色的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982401.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号