图像处理入门三
图像融合处理和ROI区域绘制
(1)图像融合(两张图像素大小必须一致,参数gamma不能省略)
图像加法:目标图像 = 图像 1 + 图像 2
图像融合:目标图像 = 图像 1 × 系数 1 + 图像 2 × 系数 2 + 亮度调节量
dst = cv2.addWeighted(scr1, alpha, src2, beta, gamma)
dst = src1 * alpha + src2 * beta + gamma
import cv2
import numpy as np
import matplotlib.pyplot as plt
#读取图片
scr1=cv2.imread('lena.png')
scr2=cv2.imread('luo.png')
#图像融合
result1=cv2.addWeighted(src1,1,src2,1,0)
#显示图像
cv2.imshow('src1',src1)
cv2.imshow('src2',src2)
cv2.imshow('result',result)
#等待显示
cv2.waitKey(0)
cv2.destoryAllWindows()
(2)图像ROI区域定位
ROI(Region of Interest)表示感兴趣区域,是指从被处理图像以方框、圆形、椭圆、不规则多边形等方式勾勒出需要处理的区域。可以通过各种算子(Operator)和函数求得感兴趣 ROI 区域,被广泛应用于热点地图、人脸识别、图像分割等领域。
#读取图像
img=cv2.imread('lena.png')
#定义200X200矩阵3对应BGR
face=np.ones((200,200,3))
#显示原始图像
cv2.imshow('demo',img)
#显示ROI区域
face=img[150:350,150:350]
cv2.imshow('face',face)
#等待显示
cv2.waitKey(0)
cv2.destoryAllWindows()
将提取的 ROI 区域融合至其他图片
#读取图片
img = cv2.imread("Lena.png")
test = cv2.imread("luo.png",)
#定义150X150矩阵3对应BGR
face1=np.ones((150,150,3))
#显示原始图像
cv2.imshow("Demo", img)
#显示 ROI 区域
face = img[200:350, 200:350]
test[250:400, 250:400] = face
cv2.imshow("Result", test)
(3) 图形属性:图像形状(shape)、像素大小
(size)和图像类型(dtype)
print(img.shape) #(行,列,通道数)
print(img.size) #像素个数,行x列x通道数
print(img.dtype) #返回数据类型,通常是uint8
(4) 图像通道分离及合并
OpenCV 通过 split()函数和 merge()函数实现对图像通道的处理,包括通道分离和通道合并。
1.split()函数
OpenCV 读取的彩色图像由蓝色(B)、绿色(G)、红色(R)三原色组成,每一种颜色可以认为是一个通道分量,b,g,r=cv.split(img),也就是三张单色图
import cv2
import numpy
# 读取图片
img=cv.imread('luo.png')
#拆分通道
b,g,r=cv.split(img)
#显示原始单色图像
cv2.imshow('B',b)
cv2.imshow('G',g)
cv2.imshow('R',r)
#等待显示
cv2.waitKey(0)
cv2.destoryAllWindows()
#获取不同通道颜色
b=cv2.split(a)[0]
g=cv2.split(a)[1]
r=cv2.split(a)[2]
2.merge()函数
b,g,r=cv2.splite(img)
m=cv2.merge([b,g,r])
可以调用该函数提取图像的不同颜色,比如提取 B 颜色通道,G、B通道设置为 0
img=cv2.imread('luo.png')
rows,cols,chn=img.shape
b=cv2.split(img)[0]
g=np.zeros((rows,cols),dtypes=img.dtype)
r=np.zeros((rows,cols),dtypes=img.dtype)
m=cv2.merge([b,g,r])
(5)图像类型转换
大多数彩色图像都是 RGB 类型,但是在图像处理过程中,常常需要用到灰度图像、二值图像、HSV、HSI 等颜色。常见的颜色空间转换标识包 括 CV_BGR2BGRA 、 CV_RGB2GRAY 、 CV_GRAY2RGB 、CV_BGR2HSV、CV_BGR2XYZ、CV_BGR2HLS
调用 cvtColor()函数将图像进行灰度化处理
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图片
scr=cv2.imread('luo.png')
#数据类型转换
result=cv2.cvtColor(scr,cv2.COLOR_BGR2GRAY)
#显示图像
cv2.imshow("src", src)
cv2.imshow("result", result)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()