OpenCV-python基础操作之对大小相同图片进行像素运算(加减乘除)

OpenCV-python基础操作之像素之间的数组运算(加减乘除),大小相同的两张图片 ,应用调节亮度,调节对比度

像素之间进行加法运算操作:

# 代码描述:  像素之间的数组运算:加减乘除,调节亮度,调节对比度
# 
# 创建时间: 2020-09-14
# 创建人: Wupke
# 修改时间:
# 版本:
import cv2 as cv


def add_demo(p1, p2):           # 定义像素相加的操作函数
    dst = cv.add(p1, p2)
    cv.imshow("add_demo", dst)


src1 = cv.imread("../OpenCV_Files/pictures_for_OpenCV/linux.jpeg")  # 读取图片1
src2 = cv.imread("../OpenCV_Files/pictures_for_OpenCV/aj.jpg")  # 读取图片2
print(src1.shape)                                               # 显示图片的信息
print(src2.shape)
cv.namedWindow("image1", cv.WINDOW_AUTOSIZE)
cv.namedWindow("image2", cv.WINDOW_AUTOSIZE)
cv.imshow("image1", src1)    
cv.imshow("image2", src2)    

add_demo(src1, src2)         # 调用叠加函数

cv.waitKey(0)                # 保持对话框
cv.destroyWindow('all')      # 清除内存

读取两张大小相同的图像:

在这里插入图片描述

像素叠加的效果:

在这里插入图片描述

减:


# 代码描述:  大小相同两张图片,像素之间进行数组减运算
# 原理:
# 创建时间: 2020-09-14
# 创建人: Kenn Wu
# 修改时间:
# 版本:
import cv2 as cv

def subtract_demo(p1, p2):      # 定义像素相减的操作函数
    dst = cv.subtract(p1, p2)
    cv.imshow("subtract_demo", dst)


src1 = cv.imread("../OpenCV_Files/pictures_for_OpenCV/linux.jpeg")  # 读取图片
src2 = cv.imread("../OpenCV_Files/pictures_for_OpenCV/aj.jpg")  # 读取图片
print(src1.shape)
print(src2.shape)
cv.namedWindow("image1", cv.WINDOW_AUTOSIZE)
cv.namedWindow("image2", cv.WINDOW_AUTOSIZE)
cv.imshow("image1", src1)    # 显示图片
cv.imshow("image2", src2)    # 显示图片

subtract_demo(src1, src2)         # 调用减法函数

cv.waitKey(0)                # 保持对话框
cv.destroyWindow('all')      # 清除内存

像素之间相减的效果:

@
@
在这里插入图片描述

乘:

# 代码描述:  大小相同两张图片,像素之间进行乘法运算
# 原理:
# 创建时间: 2020-09-14
# 创建人: Kenn Wu
# 修改时间:
# 版本:
import cv2 as cv

def multiply_demo(p1, p2):      # 定义像素间乘法操作
    dst = cv.multiply(p1, p2)
    cv.imshow("multiply_demo", dst)

src1 = cv.imread("../OpenCV_Files/pictures_for_OpenCV/linux.jpeg")  # 读取图片
src2 = cv.imread("../OpenCV_Files/pictures_for_OpenCV/aj.jpg")  # 读取图片
print(src1.shape)
print(src2.shape)
cv.namedWindow("image1", cv.WINDOW_AUTOSIZE)
cv.namedWindow("image2", cv.WINDOW_AUTOSIZE)
cv.imshow("image1", src1)    # 显示图片
cv.imshow("image2", src2)    # 显示图片

multiply_demo(src1, src2)         # 调用乘法法操作

cv.waitKey(0)                # 保持对话框
cv.destroyWindow('all')      # 清除内存

像素相乘效果图:

在这里插入图片描述

除:

# 代码描述:  大小相同两张图片,像素之间进行除法运算
# 原理:
# 创建时间: 2020-09-14
# 创建人: Kenn Wu
# 修改时间:
# 版本:
import cv2 as cv

def divide_demo(p1, p2):      # 定义像素除法的操作
    dst = cv.divide(p1, p2)
    cv.imshow("divide_demo", dst)


src1 = cv.imread("../OpenCV_Files/pictures_for_OpenCV/linux.jpeg")  # 读取图片
src2 = cv.imread("../OpenCV_Files/pictures_for_OpenCV/aj.jpg")  # 读取图片
print(src1.shape)
print(src2.shape)
cv.namedWindow("image1", cv.WINDOW_AUTOSIZE)
cv.namedWindow("image2", cv.WINDOW_AUTOSIZE)
cv.imshow("image1", src1)    # 显示图片
cv.imshow("image2", src2)    # 显示图片

divide_demo(src1, src2)         # 调用除法操作

cv.waitKey(0)                # 保持对话框
cv.destroyWindow('all')      # 清除内存

像素相除效果图:

在这里插入图片描述

好的,这是一个有趣的问题。我们可以使用OpenCV库来加载和处理图像。以下是代码示例: ``` python import cv2 import numpy as np # 加载图像 image1 = cv2.imread("image1.jpg") image2 = cv2.imread("image2.jpg") # 将两个图像拼接在一起 concatenated_image = np.concatenate((image1, image2), axis=1) # 将两个图像相加 added_image = cv2.add(image1, image2) # 将两个图像相减 subtracted_image = cv2.subtract(image1, image2) # 将两个图像相乘 multiplied_image = cv2.multiply(image1, image2) # 将两个图像相除 divided_image = cv2.divide(image1, image2) # 显示图像 cv2.imshow("Concatenated Image", concatenated_image) cv2.imshow("Added Image", added_image) cv2.imshow("Subtracted Image", subtracted_image) cv2.imshow("Multiplied Image", multiplied_image) cv2.imshow("Divided Image", divided_image) # 等待按键 cv2.waitKey(0) # 保存图像 cv2.imwrite("concatenated_image.jpg", concatenated_image) cv2.imwrite("added_image.jpg", added_image) cv2.imwrite("subtracted_image.jpg", subtracted_image) cv2.imwrite("multiplied_image.jpg", multiplied_image) cv2.imwrite("divided_image.jpg", divided_image) # 释放窗口 cv2.destroyAllWindows() ``` 在这个例子中,我们使用了OpenCV库来加载和处理图像。我们将它们转换为numpy数组,然后使用OpenCV操作来拼接、相加、相减、相乘和相除这些图像。最后,我们将numpy数组转换为图像,并将它们保存到磁盘上。 需要注意的是,OpenCV库中的加减乘除操作是基于每个像素点的数值进行的。因此,如果我们想要对彩色图像进行相加、相减、相乘和相除的操作,需要考虑每个颜色通道的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值