opencv学习笔记07

python opencv3图像处理课程学习——ROI与泛洪填充

1.用ROI提取感兴趣区域

import cv2 as cv
import numpy as np


src = cv.imread("C:/Users/ASUS/Desktop/11/2.jpg")  # 从目录中读取图片
cv.namedWindow("image1", cv.WINDOW_AUTOSIZE)  # 通过opencv的GUI将图片显示出来
cv.imshow("image1", src)  # 在窗口中将图片显示出来,通过名字“src”找到图片
face = src[10:250, 60:200]  # 用ROI提取[10:250, 60:200]区域
cv.imshow('face', face)
cv.waitKey(0)
cv.destroyAllWindows()

输出
在这里插入图片描述
2.

import cv2 as cv
import numpy as np


src = cv.imread("C:/Users/ASUS/Desktop/11/2.jpg")  # 从目录中读取图片
cv.namedWindow("image1", cv.WINDOW_AUTOSIZE)  # 通过opencv的GUI将图片显示出来
cv.imshow("image1", src)  # 在窗口中将图片显示出来,通过名字“src”找到图片
face = src[10:200, 60:200]  # 用ROI提取[50:250, 100:200]区域
gray = cv.cvtColor(face, cv.COLOR_BGR2GRAY)  # 将RGB空间转换为灰度空间
backface = cv.cvtColor(gray, cv.COLOR_GRAY2BGR)  # 将灰度空间转回RGB空间
src[10:200, 60:200] = backface
cv.imshow('face', src)
cv.waitKey(0)
cv.destroyAllWindows()

输出
在这里插入图片描述
3.彩色图像填充

import cv2 as cv
import numpy as np


def fill_color_demo(image):
    copyImg = image.copy()  # 复制原始图像
    h, w = image.shape[:2]
    mask = np.zeros([h+2, w+2], np.uint8)
    cv.floodFill(copyImg, mask, (50, 50), (0, 255, 255),  (95, 95, 95), (30, 30, 30), cv.FLOODFILL_FIXED_RANGE)
    # (30, 30)是要填充的起始位置,最低要填充的像素范围为在(50, 50)中取当前的像素值-95,最高范围是当前像素值+30
    # (0, 255, 255)是黄色,cv.FLOODFILL_FIXED_RANGE是填充方法,表示在范围内的全填充黄色
    cv.imshow("fill-color-demo", copyImg)


src = cv.imread("C:/Users/ASUS/Desktop/11/2.jpg")  # 从目录中读取图片
cv.namedWindow("image1", cv.WINDOW_AUTOSIZE)  # 通过opencv的GUI将图片显示出来
cv.imshow("image1", src)  # 在窗口中将图片显示出来,通过名字“src”找到图片
fill_color_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

输出
在这里插入图片描述

4.二值图像填充

import cv2 as cv
import numpy as np


def fill_binary():
    image = np.zeros([400, 400, 3], np.uint8)  # 创建图
    image[100:300, 100:300, :] = 255  # 在长100-300和宽100-300,3个通道的像素值赋值为255,
    cv.imshow("fill_binary", image)
    mask = np.ones([402, 402, 1], np.uint8)
    mask[101:301, 101:301] = 0  # 初始为0,因为只有不为1的区域才会被填充
    # 从(200, 200)处开始,将image填充为红色
    cv.floodFill(image, mask, (200, 200), (0, 0, 255), cv.FLOODFILL_MASK_ONLY)
    cv.imshow("filled binary", image)


fill_binary()
cv.waitKey(0)
cv.destroyAllWindows()

输出
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值