图像处理基础
Fu Xianjun. All Rights Reserved.
图像基本表示方法有:二值图像,灰度图像,彩色图像
二值图像包含黑色和白色两种颜色的图像
处理前图像: 处理后图像:
灰度图像采用了更多的数值来体现不同颜色,能够表现出更多的细节。
彩色图像是更常见的一类图像,能够表现出更丰富的细节信息。
其中最为常用的是RGB彩色空间。RGB彩色空间中,存在R(red,红色)通道、G(green,绿色)通道和B(blue,蓝色)通道,共为三个通道。每个彩色通道值的范围都在[0,255]之间。
Numpy库中zeros()和ones()函数均可以生成一个数组
感兴趣区域(Region of Interest,ROI)
黑色ROIB表示为:Img[200:400, 200:400]
通道操作
(1)通过索引拆分
B = img[: ,:, 0]
G = img[:, :, 1]
R = img[:, :, 2](2)通过函数拆分
B, G, R = cv2.split(img)
(3)通道合并
Img = cv2.merge([B , G ,R])
图像逻辑运算:与、或、异或、非:使用opencv中有四种逻辑运算函数实现操作
与 运算cv2.bitwise_and();
或 运算cv2.bitwise_or();
异或 运算cv2.bitwise_xor();
非 运算cv2.bitwise_not();
面部打码
import cv2 import numpy as np shenmi = cv2.imread("shenmi.jpg",0) height,width = shenmi.shape mask = np.zeros(height,width),dtype = np.uint8) mask[30:92,59:120] = 255 key = cv2.imread("shenmi.jpg",0) jiami = cv2.bitwise_xor(shenmi,key) jiamiface = cv2.bitwise_and(jiami,mask) noface = cv2.bitwise_and(shenmi,(255-mask) final = jiamiface+noface cv2.imshow("shenmi",shenmi) cv2.imshow("mask",mask) cv2.imshow("jiami",jiami) cv2.imshow("jiamiface",jiamiface) cv2.imshow("noface",noface) cv2.imshow("final",final) cv2.waitKey() cv2.destroyAllWindows()