准备工作:
导入两个包
准备一张图片
import cv2 as cv
import numpy as np
src=cv.imread("C:/Users/admin/Pictures/zyl/Tes1.jpg")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)
ROI(感兴趣区域)
获取截来的图片,改变颜色,并把它和原图合为一体
#计算图片的大小
print(src.shape)
#ROI区域
#src[图片区域的高度范围,宽度范围]
face=src[100:500,300:800]
#把截取的图片变成灰度颜色
gray=cv.cvtColor(face,cv.COLOR_BGR2GRAY)
#再把截取的灰色图片转换成BGR格式
backface= cv.cvtColor(gray,cv.COLOR_BAYER_BG2BGR)
#BGR格式图片在传给src原图
src[100:500,300:800]=backface
#显示截取的灰色图片和正常图片的叠加
cv.imshow("face",src)
泛洪填充
填充方式:
cv.FLOODFILL_FIXED_RANGE:改变图像,泛红填充
cv.FLOODFILL_MASK_ONLY:不改变图像,只有、填充遮罩层本身、忽略新的颜色值参数
方式一 指定颜色填充:
#1.先定义一个彩色图像
def fill_color_demo(image):
#复制一个图片
copyImg=image.copy()
#获取这个图片的高宽
h,w=image.shape[:2]
#大小固定这么写
mask=np.zeros([h+2,w+2],np.uint8)
#floodFill( 1.操作的图像, 2.掩模, 3.起始像素值,4.填充的颜色, 5.填充颜色的低值, 6.填充颜色的高值 ,7.填充的方法)
cv.floodFill(copyImg,mask,(30,30),(0,255,255),(100,100,100),(50,50,50),cv.FLOODFILL_FIXED_RANGE)
#显示
cv.imshow("fill_color_demo",copyImg)
fill_color_demo(src)
方式二 指定位置填充:
def fill_bimzry():
#创建一个窗体
image=np.zeros([400,400,3],np.uint8)
#给高度100到300,宽度100到300,变颜色(白)
image[100:300,100:300, : ]= 255
#显示
cv.imshow("fill_bimzry",image)
#创建一个正方形单通道的窗体给mask
mask=np.ones([400+2,400+2,1],np.uint8)# 遮罩层设为1 这个加2和uint8都是固定的
#遮罩层中要填充的区域设置
mask[101:301,101:301]=0
#填充方法为仅仅在mask的区域激进行 这种方法要mask设为1 填充的mask区域必需是0. 原理是不为1的才会被填充
# floodFill(1.操作的图像, 2.掩模,3.填充颜色的低值, 4.填充颜色的高值,5.填充的方法)
cv.floodFill(image,mask,(200,200),(0,0,255),cv.FLOODFILL_FIXED_RANGE)
#显示
cv.imshow("fill bimzry",image)