欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

opencv学习笔记——图像运算

程序员文章站 2024-01-20 16:56:22
...

图像运算

加法运算

参与运算的图像大小、类型必须一致

Numpy加法

取模加法:结果 = 图像1 + 图像2

  • 像素值 <= 255,图像1 + 图像2(100+58=158)
  • 像素值 > 255,对255取模(255+58 = (255+58)% 255 = 58)

产生这种结果的原因是,图像的数据类型是unit8,进行加法运算后,超出8位之外的部分会被舍弃,所以进行加法运算后的像素值始终小于255

image1 + image2

OpenCV加法

饱和运算:结果 = cv2.add(图像1, 图像2)

  • 像素值 <= 255,图像1 + 图像2
  • 像素值 > 255,取值255
cv2.add(image1, image2)

应用

import cv2
import numpy as np

color1 = cv2.imread('image/color.jpg')
cv2.imshow('color1', color1)
color2 = color1
np_add = color1 + color2  # Numpy加法
cv_add = cv2.add(color1, color2)  # OpenCV加法

cv2.imshow('np_add', np_add)
cv2.imshow('cv_add', cv_add)
cv2.waitKey(0)
cv2.destroyAllWindows()

图像融合

将两张或两张以上的图像信息融合到一张图像上

融合的图像含有更多的信息、能够更方便人们观察或者计算机处理

图像加法:结果图像 = 图像1 + 图像2

图像融合:结果图像 = 图像1 * 系数1 + 图像2 * 系数2 + 亮度调节量

cv2.addWeighted(src1, alpha, src2, beta, gamma)  # 参数gamma不能省略
dst = src1 * alpha + src2 * beta + gamma

应用

import cv2

color = cv2.imread('image/color.jpg')
color = color[0:700, 0:1300]
test = cv2.imread('image/test.jpg')
test = test[0:700, 0:1300]

dst = cv2.addWeighted(color, 0.5, test, 0.5, 0)  # 图像融合
cv2.imshow('color', color)
cv2.imshow('test', test)
cv2.imshow('dst',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()