Opencv学习笔记——图像像素算法处理
以下均为github上opencv的个人学习笔记,原路径如下:
https://github.com/JimmyHHua/opencv_tutorials
源码示例:
import cv2 as cv
import numpy as np
src0 = cv.imread("./test0.jpg") # 读取第一张测试图片
src1 = cv.imread("./test1.jpg") # 读取第二张测试图片
cv.imshow("input window for image0", src0) # 展示图像输入0
cv.imshow("input window for image1", src1) # 展示图像输入1
(h, w, ch) = src0.shape # 获取图片维度信息
print(f"图像维度: h={h}, w={w}, channels={ch}") # 输出详细信息
将 add_result 初始化为与 src1 形状和数据类型的零数组。
OpenCV库将 src1 和 src2 的值相加,并将结果存储在 add_result 中。
OpenCV库调用 imshow 函数以显示名为 "add_result" 且包含该数组的窗口。
赋值给变量sub_result的numpy数组初始化为src1的形状和数据类型。
使用OpenCV执行减法运算,并将结果存储在变量sub_result中。
调用cv imshow函数以显示名为sub_result的结果图像。
result = np.zeros((src1.shape[0], src1.shape[1]), src1.dtype)
cv.execute(src2.imul(src1), [result])
cv.imshow(result); cv.waitKey(0); cv.destroyAllWindows()
div_result被初始化为与src1形状相同且数据类型一致的零数组。
OpenCV库中的divide函数用于计算两个图像之间的逐元素商。
调用imshow函数以显示结果图像div_result,并指定窗口标题为"result"以及显示的内容。
cv.waitKey(0)
cv.destroyAllWindows()
1.图像的加运算
图像加法运算指的是将两幅图像的每个像素对应的灰度值或彩色分量相加以实现信息融合。其主要应用包括两种情况:一种是去除噪声干扰,在相同场景下的多幅图像进行叠加后取平均以增强信号质量;另一种是在特效制作中将多幅图片叠加形成背景画面,并在此基础上进一步优化和处理以达到视觉效果目的。
在灰度图像的情况下(仅包含一个通道),可以直接将相应像素位置上的值进行相加即可;而针对彩色图像,则需对每个颜色通道分别进行相应的加法运算。
通常来将,两幅或多幅相加的图像的大小和尺寸应该相同。
cv.add(src1,src2,add_result) //意思是add_result = src1+src2
2.图像相减
对于两副图像中的对应像素点而言,在其灰度值或彩色分量上执行相减操作即为减法运算。这种操作在目标检测中具有重要应用,在程序实现时通常采用这两种方案。
cv.subtract(src1,src2,sub_result) //意思是sub_result = src1-src2
3.图像相乘
图像的乘法运算就是将两幅图像对应的灰度值或彩色分量进行相乘。
乘运算的主要功能是抑制图像的部分区域,在处理过程中通过设定掩膜值来达到这一效果:将掩膜值设置为1时会执行特定操作(例如保留该区域),而设置为0则会进行抑制(即忽略该区域)。此外,在实际应用中,乘运算是实现卷积或其他相关操作的重要工具。
cv.multiply(src1,src2,mul_result) //意思是mul_result = src1*src2
4.图像相除
图像除运算就是两幅图像对应像素的灰度值或彩色分量进行相除。
简单的出运算可以用于改变图像的灰度级
cv.divide(src1,src2, div_result) //意思是div_result = src1/src2
运算结果:
原图:


二者相加: 二者相减:


二者相乘: 二者相除:


