zoukankan      html  css  js  c++  java
  • ROI区域操作与泛红填充

    '''
    ROI(region of interest),
    也就是感兴趣区域,如果你设置了图像了ROI,
    那么在使用OpenCV的函数的时候,会只对ROI区域操作,
    其他区域忽略。
    '''
    import cv2 as cv
    import numpy as np
    
    
    # 截取图片中的指定区域或在指定区域添加某一图片
    def jie_image(src1):
        # 截取第5行到89行的第500列到630列的区域
        src2 = src1[20:100,500:700]
        cv.imshow('intercept',src2) # 截取图片
        src1[105:185,300:500] = src2  # 指定位置填充,大小要一样才能填充
        cv.imshow('composite',src1) # 合成图片
    
    # 指定颜色替换
    def fill_image(image):
        copyImage = image.copy() # 复制原图像
        h,w = copyImage.shape[:2] # 读取图像的宽和高
       # 注意是uint8,是不Unit8
        mask = np.zeros([h+2,w+2],np.uint8) #新建图像矩阵  +2是官方函数要求
        # 泛洪填充7个参数,够头疼的
        cv.floodFill(copyImage, mask, (0, 80), (0, 100, 255), (100, 100, 50), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE)
        '''
         floodFill( 1.操作的图像, 2.掩模, 3.起始像素值,4.填充的颜色, 5.填充颜色的低值, 6.填充颜色的高值 ,7.填充的方法
    
        参数5.填充颜色的低值就是:参数3 减去 参数5
    
        参数6.填充颜色的高值就是:参数3 加上 参数6
    
        即是这两个数值之间的色素替换为参数4的颜色
    
        
        '''
        cv.imshow('floodFill',copyImage)
    
    # 指定位置填充
    def fill_binary():
        # 创建一张400*400的黑图
        image = np.zeros([400,400,3],np.uint8)
        image[50:350,50:350,:] = 255
        cv.imshow('original',image)
    
        # mask的大小一定比原图大2
        #注意是uint8,是不Unit8 同样的错误一般还会再犯
        mask = np.ones([402,402,1],np.uint8)
        # 将下面的区域赋值为0
        mask[103:301,101:301] = 0
        # 进行指定位置填充
        cv.floodFill(image,mask,(200, 200), (0, 0, 255),(10,10,10),(10, 10, 10), cv.FLOODFILL_MASK_ONLY)
        cv.imshow('floodFill2',image)
    
    
    if __name__ == '__main__':
        '''
        ROI切片填充
        '''
        # src = cv.imread('pic/bizhi.jpg')
        # cv.imshow('original',src)
        # jie_image(src)
        # cv.waitKey(0)
        # cv.destroyAllWindows()
    
        '''
        泛洪填充fill_image()
        '''
        # src = cv.imread('pic/bizhi.jpg')
        # cv.imshow('original',src)
        # fill_image(src)
        # cv.waitKey(0)
        # cv.destroyAllWindows()
    
        '''
        指定位置填充fill_binary()
        '''
        fill_binary()
        cv.waitKey(0)
        cv.destroyAllWindows()
    
    
    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    6月7日の勉強レポート
    6月6日の勉強レポート
    6月5日の勉強レポート
    6月4日の勉強レポート
    6月3日の勉強レポート
    6月2日の勉強レポート
    6月1日の勉強レポート
    linux 文件属性
    linux网卡配置
    redhat6修改主机名
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15138220.html
Copyright © 2011-2022 走看看