美文网首页
使用Opencv实现ROI(region of interest

使用Opencv实现ROI(region of interest

作者: 小小老书童 | 来源:发表于2020-07-04 19:41 被阅读0次

    问题

      1. 为什么需要使用 ROI ?
      1. 怎么实现 ROI 的提取?

    回答

      1. ROI 可以提取原图中感兴趣的区域来进行研究(待增加)。
      1. ROI 的提取方法有很多种,个人更倾向于使用mask来进行。

    基于Python的Opencv实现方法

    import cv2 as cv
    import numpy as np
    
    
    def ROI_Select_demo(image):
        h,w = image.shape[:2]
        mask = np.zeros((h,w),dtype = np.uint8)
        x_data = np.array([101, 102, 201, ... ,])
        y_data = np.array([20, 30, 40, ...,])
        pts = np.vstack((x_data, y_data)).astype(np.int32).T #函数np.vstack()
        cv.fillPoly(mask, [pts], (255), 8, 0)    #函数cv.fillPoly(img,pts,color,lineType=None,shift=None,offset=None)
        cv.imshow("mask", mask)
        result = cv.bitwise_and(image, image, mask = mask)  #函数cv.bitwise_and(src1, src2,dst=None,mask=None)
        cv.imshow("result", result)
    
    
    if __name__ ==  "__main__":
        src = cv.imread("图片路径")
        cv.imshow("input_image", src)
        ROI_Select_demo(src)    #调用函数
        cv.waitKey(0)
        cv.destroyAllWindows()
    

    效果

    image.png
    image.png
    image.png
    以上主要涉及的函数

    1.np.vstack() 主要是实现坐标读取顺序的问题,这个函数是垂直(行顺序)读取,.T是进行简单转置。
    补充:np.hstack(),水平方向

    2.cv.fillPoly(img,pts,color,lineType=None,shift=None,offset=None) 用于一个单独被多边形轮廓所限定的区域内进行填充;参数img:表示填充的图像;pts:多边形数组;color:表示填充的颜色;lineType:线条类型;shift:坐标的精确位数;offset:偏移量。
    补充:函数cv.fillConvexPoly()可以用来填充凸多边形,该函数的多边形绘制速度要快于cv.fillPoly()。具体的可以参考opencv官方介绍。

    3.cv.bitwise_and(src1, src2,dst=None,mask=None):bitwise_and是对二进制数据进行“与”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“与”操作,1&1=1,1&0=0,0&1=0,0&0=0;
    补充:bitwise_or是对二进制数据进行“或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“或”操作,1or1=1,1or0=0,0or1=0,0or0=0
    bitwise_not是对二进制数据进行“非”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“非”操作,not1=0,not0=1

    关于图上坐标的确认:

    我是使用Labelme来获取的,通过打开json文件得到的较为精准的坐标。

    欢迎大家的修正和讨论!也感谢网上资料的共享!

    相关文章

      网友评论

          本文标题:使用Opencv实现ROI(region of interest

          本文链接:https://www.haomeiwen.com/subject/vwxpqktx.html