OpenCV—ROI与泛洪填充

ROI

寻找感兴趣的区域主要就是利用矩阵的切片功能来提取.

  1. 根据输入image,将ROI映射到feature map对应位置;
  2. 将映射后的区域划分为相同大小的sections(sections数量与输出的维度相同);
  3. 对每个sections进行max pooling操作
import cv2 as cv
import numpy as np


src1 = cv.imread("D:/JetBrains/PyCharm 2019.1.3/PycharmProjects/Study/opencv_study/Penguins.jpg")
src2 = cv.imread("D:/JetBrains/PyCharm 2019.1.3/PycharmProjects/Study/opencv_study/1.jpg")
cv.namedWindow("input img", cv.WINDOW_AUTOSIZE)
cv.imshow("img", src2)


print(src2.shape)
face = src2[50:270,  50:250] # 提取需要的范围
gray = cv.cvtColor(face, cv.COLOR_BGR2GRAY)
backface = cv.cvtColor(gray,cv.COLOR_GRAY2BGR)
src2[50:270,  50:250] = backface
cv.imshow("face", src2)

cv.waitKey(0)
cv.destroyAllWindows()

效果图:

泛洪填充

泛洪填充,如何填充一个对象内部区域

FLOODFILL_FIXED_RANGE- 改变图像,泛洪填充
FLOODFILL_MASK_ONLY - 不改变图像,只填充遮罩层本身,忽略新的颜色值参数
floodFill(Mat image, Mat mask, Point seedPoint, Scalar newVal)
floodFill(image, mask, seedPoint, newVal, rect, loDiff, upDiff, flags)
src(x,y)=[src(seed.x, seed,y)-loDiff, src(seed.x, seed,y)+upDiff]

import cv2 as cv
import numpy as np


# 颜色填充
def fill_color_demo(img):
    copyImg = img.copy()
    h, w = img.shape[:2]
    mask = np.zeros([h+2, w+2], np.uint8)  # 创建图像 必须要+2,且是8位的
    cv.floodFill(copyImg, mask, (30, 30), (0, 255,255), (100, 100, 100), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE)
    cv.imshow("copyimg", copyImg)


def creatImg():
    newImg = np.zeros([400, 400 ,3], np.uint8)
    newImg[100:300, 100:300, : ] = 255
    cv.imshow("newImg", newImg)

    mask = np.ones([402, 402, 1], np.uint8) # 402 = 400 + 2
    mask[101:301, 101:301] = 0
    cv.floodFill(newImg, mask, (200, 200), (100, 5, 255), cv.FLOODFILL_MASK_ONLY)
    cv.imshow("filledImg", newImg)


src1 = cv.imread("D:/JetBrains/PyCharm 2019.1.3/PycharmProjects/Study/opencv_study/Penguins.jpg")
src2 = cv.imread("D:/JetBrains/PyCharm 2019.1.3/PycharmProjects/Study/opencv_study/1.jpg")
cv.namedWindow("input img", cv.WINDOW_AUTOSIZE)
fill_color_demo(src2)
creatImg()

cv.waitKey(0)
cv.destroyAllWindows()

效果图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值