python cv2截取不规则区域图片实例

  

<强>知识掌握

  

<强> cv2.threshold()函数:

  

设置固定级别的阈值应用于多通道矩阵,将灰度图像变换二值图像,或去除指定级别的噪声,或过滤掉过小或者过大的像素点。

        Python: cv2。阈值(src,推敲,maxval类型(dst))→retval, dst      

在其中:

  

src:表示的是图片源

  

打:表示的是阈值(起始值)

  

maxval:表示的是最大值

  

类型:表示的是这里划分的时候使用的是什么类型的算法,常用值为0 (cv2.THRESH_BINARY)

        进口cv2      img=cv2.imread (“1. jpg”)   cv2。imshow (“src”, img)   灰色=cv2。cv2.COLOR_BGR2GRAY cvtColor (img)   ret, dst=cv2。阈值(灰色,127年,255年,cv2.THRESH_BINARY)   cv2。dst imshow (dst)   cv2.waitKey (0)   之前      

 python cv2截取不规则区域图片实例

  

<强> cv2.findContours()函数:

  

<强>查找检测物体的轮廓

        cv2。findContours(图像、模式、方法)      

opencv2返回两个值:轮廓:层次结构。

  

<强> opencv3会返回三个值,分别是img,轮廓,层次

  

在其中:

  

<强>图片:表示的是寻找轮廓的图像;

  

<强>模式:表示的是轮廓的检索模式,有四种:

  

cv2.RETR_EXTERNAL表示只检测外轮廓

  

cv2.RETR_LIST检测的轮廓不建立等级关系

  

cv2.RETR_CCOMP建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层。

  

cv2.RETR_TREE建立一个等级树结构的轮廓。

  

<强>方法:表示的是轮廓的近似办法

  

cv2.CHAIN_APPROX_NONE存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即马克斯(abs (x1, x2)), abs (y2-y1))==1

  

cv2.CHAIN_APPROX_SIMPLE压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息

  

cv2。CHAIN_APPROX_TC89_L1, CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl链近似算法

        进口numpy np   进口cv2      矩形=np.zeros ((300300), dtype=皍int8”)   cv2.rectangle(矩形、(25、25)(275275),255年,1)   cv2.imshow(“矩形”,矩形)=cv2 img、轮廓、层次结构。findContours(矩形,cv2。RETR_TREE cv2.CHAIN_APPROX_SIMPLE)   打印(轮廓)   打印(层次)   cv2.waitKey (0)   之前      

 python cv2截取不规则区域图片实例

        [阵列([[[25、25]],   [[275]],   [[275、275]],   25[[275年]]],dtype=int32))      [[[1 1 1 1]]]   之前      

<强> cv2.polylines函数:

  

<强>绘制多边形

        cv2。polyline (img, pts的空当,颜色、厚度、线型[,]]])      之前      

首先需要顶点坐标。将这些点转换为rowsx1x2形状的数组,其中行是顶点数,它应该是int32类型。

        进口numpy np   进口cv2   #创建一个黑人形象   img=np。0 ((200、200、3)np.uint8)      分=np。阵列([[10 5](20、30),[70,20],[50 10]],np.int32) #每个点都是(x, y)   分=分。重塑((1,1,2))   cv2。polyline (img, (pts),真的,(0,255,255))      分=np。阵列([[5]100年,[150,30],[80,20],[10]90年],np.int32)   cv2。polyline (img, (pts),假的,(0,255,255))   cv2。imshow (img2, img)      cv2.waitKey ()   之前      

如果第三个参数为假,您将获得连接所有点的折线,而不是闭合形状。

  

cv2.polylines()可用于绘制多条线。只需创建要绘制的所有行的列表并将其传递给函数,所有线条都将单独绘制。绘制一组行比为每行调用cv2.line()要好得多,速度更快。

  

 python cv2截取不规则区域图片实例

  

<强> cv2.fillPoly)函数

  

可以用来填充任意形状的图型。可以用来绘制多边形,工作中也经常使用非常多个边来近似的画一条曲线.cv2.fillPoly()函数可以一次填充多个图型。

python cv2截取不规则区域图片实例