1. ROI
ROI(region of Interest)从英语来看就是您所感兴趣的区域,也就是挖取您感兴趣的区域。
例如下图你对你这女生的脸部感兴趣,那么这个部分就叫做ROI。
代码实现
import cv2 as cv
# 读入女孩照片
girl = cv.imread("girl.jpg")
# 提取女孩脸部
face = girl[10:180, 100:255, :]
# 显示女孩脸部
cv.imshow("face", face)
# 将ROI从RGB转换为灰度图
gray = cv.cvtColor(face, cv.COLOR_BGR2GRAY)
# 显示RIO灰度图
cv.imshow("gray", gray)
# 尝试使用 cv2.COLOR_GRAY2BGR 将灰度图转化成RGB图,通过这种方式并不能进行转化
gray2rgb = cv.cvtColor(gray, cv.COLOR_GRAY2BGR)
cv.imshow("gray2rgb", gray2rgb)
# 对ROI区域进行通道处理,将 B 通道值赋值为0 相当于丢失 B 通道
face[:, :, 0] = 0
cv.imshow("face_lose_channel_B", face)
# 将处理后的ROI又重新放到原图该有的位置
girl[10:180, 100:255, :] = face
cv.imshow("changed_girl", girl)
cv.waitKey(0)
cv.destroyAllWindows()
一般情况下我们都是将RGB图像转化为灰色图,很少将灰色图又转化为RGB图像。cv2.cvtColor()中有一个参数 cv2.COLOR_GRAY2BGR 并不将灰度图转化为RGB。
RGB图像中有三个维度的信息,每种颜色相当于一个三维向量,表示法则相当于同一个向量在不同的坐标轴下(即不同的基下)的表示。而将其变为灰度后,只剩下一个维度,相当于将三维向量投影为一维标量一样,是不可能回复为原来的向量的。要想恢复,就必须储存另外两个维度的信息,合在一起就是原先的三维向量,这就是原理。
2. 泛洪填充
泛红填充就是将与种子点相连接的区域换成特定的颜色,通过设置连通方式或像素的范围可以控制填充的效果。通常是用来标记或分离图像的一部分对其进行处理或分析,或者通过掩码来加速处理过程。可以只处理掩码指定的部分或者对掩码上的区域进行屏蔽不处理。
泛洪填充函数
floodFill(image, mask, seedPoint, newVal, loDiff=None, upDiff=None, flags=None)
其中:
代码实现
(1) flag = CV_FLOODFILL_FIXED_RANGE 时
import cv2 as cv
def fill_color_demo(image):
# 在复制图像上进行操作
copyimg = image.copy()
h, w = copyimg.shape[:2]
mask = np.zeros([h + 2, w + 2], np.uint8)
cv.floodFill(copyimg, mask, (30,30), (0, 255, 255), (50, 20, 50), (50, 50 ,30), cv.FLOODFILL_FIXED_RANGE)
cv.imshow("fill_color_demo", copyimg)
girl = cv.imread("girl.jpg")
cv.imshow("girl", girl)
fill_color_demo(image):
(1) flag = CV_FLOODFILL_FIXED_RANGE 时
import cv2 as cv
import numpy as np
def fill_binary():
# 创建一个高400宽400通道为3的黑色图像
image = np.zeros([400, 400, 3], np.unit8)
image[100:300, 100:300, :] = 255
cv.imshow("fill_binary", image)
mask = np.ones([402, 402, 1], np.uint8)
# mask的指定的位置为零时才填充,不为零不填充
mask[101:301, 101:301] = 0
cv.floodFill(image, mask, (200,200), (123,23,255), cv.FLOODFILL_MASK_ONLY)
cv.imshow("mask", mask)
cv.imshow("filled_binary", image)
fill_binary()
初学Opencv,如有错误地方会改进地方,真诚地邀请您提出来,谢谢!
本文结束…