11-图像轮廓

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了11-图像轮廓脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

图像轮廓轮廓可以说是一个很好的图像目标的外部特征,这种特征对于我们进行图像分析,目标识别和理解等更深层次的处理都有很重要的意义换句话说,边缘检测能够测出边缘,但是边缘是不连续的。将边缘连接为一个整体,构成轮廓需要注意的问题1> 通常是针对二值图像的轮廓提取,需要预先进行阈值分割或者边缘检测处理2> 查找轮廓需要更改原始图像,因此,通常使用原始图像的一份拷贝操作3> 在oPEncv中,寻找轮廓是针对白色物体的,一定要保证物体是白色,而背景必须是黑色

11-图像轮廓

cv2.findContours()查找图像轮廓函数contours,hierArchy = cv2.findContours(image,mode,method)1> contours:轮廓;hierarchy:图像的拓扑信息(轮廓层次)2> image:原始图像;mode:轮廓检索模式;method:轮廓的近似方法

11-图像轮廓

11-图像轮廓

cv2.drawContours()将查找到图像轮廓绘制到图像上r = cv2.drawContours(o,contours,contourldx,color[,thickness])1> r:目标图像,直接修改目标的像素点,实现绘制2> o:原始图像;contours:需要绘制的边缘数组;contourldx:需要绘制的边缘索引(如果全部绘制则为-1);color:绘制的颜色;thickness:绘制轮廓时所用的画笔粗细(可选)

import cv2

img = cv2.imread(r"imagecontours.bmp",cv2.IMREAD_COLOR)
# 彩色图像转灰度图
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# 灰度图转换为二值图,cv2.ThrESH_BINARY(二进制阈值化)
ret,binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)

# cv2.findContours()查找图像轮廓函数
contours,hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHaiN_APPROX_SIMPLE)

# 拷贝原始图像,因为查找轮廓需要更改原始图像
copy_img = img.copy()
copy_img2 = img.copy()

# cv2.drawContours()将查找到图像轮廓绘制到图像上
# 绘制第一个图像的轮廓
result1 = cv2.drawContours(copy_img,contours,0,(0,255,0),6)
# 绘制所有图像的轮廓
result2 = cv2.drawContours(copy_img2,contours,-1,(0,255,0),6)

cv2.imshow("original",img)
cv2.imshow("result1",result1)
cv2.imshow("result2",result2)

cv2.waITKey(0)
cv2.destroyAllWindows()

提取图像的轮廓,实验结果:

11-图像轮廓

 

 

 

 

脚本宝典总结

以上是脚本宝典为你收集整理的11-图像轮廓全部内容,希望文章能够帮你解决11-图像轮廓所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。