1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Open cv的Canny边缘检测和轮廓检测例子

Open cv的Canny边缘检测和轮廓检测例子

时间:2022-02-02 12:34:34

相关推荐

Open cv的Canny边缘检测和轮廓检测例子

# -*- coding:utf-8 -*-import cv2image = cv2.imread("images/000.jpg")cv2.imshow("en",image)#Canny函数,三个参数:源图像,低阈值,高阈值image = cv2.Canny(image,200,300)cv2.imshow("what",image)cv2.waitKey(0)

Canny 源码解析

====================================================================================

轮廓检测

imread( )

第一个参数是图像的路径,第二个参数一般默认为1,也就是彩色图片.

第二个参数,int类型的flags,为载入标识

flags = 0, 载入灰度图flags = 1, 默认值flags = 2, 无损源图像

固定阈值操作:threshold( )函数

基本思想

对单通道数组应用固定阈值操作.该函数的典型应用是对灰度图像进行阈值操作得到二值图像,或者是去掉噪声例如滤掉很大或者很小的像素值的图像点.

python: cv2.threshold(src,thresh,maxval,type,dst)

第一个参数src: 源数据.

第二个参数thresh: 阈值的具体值.

第三个参数maxval: 当type值取cv2.THRESH_BINARY或cv2.THRESH_BINARY_INV时域值类型时的最大值.

第四个参数type: 阈值类型.

cv2.THRESH_BINARY 二进制阈值:二值阈值化cv2.THRESH_BINARY_INV 反二进制阈值:反向二值阈值化并反转THRESH_TRUNC 截断阈值:截断阈值化THRESH_TOZERO 反阈值化为0:超过阈值被置为0THRESH_TOZERO_INV 阈值化为0:低于阈值被置为0

上述标识符依次取值分别为0,1,2,3,4.

查找并绘制轮廓

寻找轮廓:findContours( )函数

用于在二值图像中寻找轮廓

cv2.findContours(image, mode, method, contours, hierarchy, offset)

第一个参数 image : 输入图像,即源图像.图像的非零像素被视为 1 , 0 像素值被保留为0,所以图像为二进制.可以使用compare(),inrange(),threshold(),adaptivethreshold(),canny()等函数由灰度图或者彩色图创建二进制图像.此函数会在提取图像轮廓的同时修改图像的内容.

第二个参数 mode : 轮廓检索模式.

第三个参数 method : 轮廓的近似办法

第四个参数 contours : 检测到的轮廓,函数调用后的运算结果存在这里.每个轮廓存储为一个点向量.

第五个参数 hierarchy : 可选的输出向量,包含图像的拓扑信息,其作为轮廓数量的表示,包含了许多元素.

第六个参数 offset:每个轮廓点的可选偏移量,有默认值.

绘制轮廓:drawContours( )函数

用于在图像中绘制外部或内部轮廓.

cv2.drawContours(image, contours, contourIdx, color, thickness = None, lineType = None, hierarchy = None, maxLevel

=None, offset = None)

第一个参数 image : 目标图像.

第二个参数 contours : 所有的输入轮廓.

第三个参数 contourIdx : 轮廓绘制的只是指示变量,如果其为负值,则绘制所有的轮廓.

第四个参数 color : 轮廓的颜色.

第五个参数 thicKness : 轮廓线条的粗细度,有默认值1.如果其为负值(如thickness = cv_filled),便会绘制在轮廓的内部.

第六个参数 lineType:线条的类型,有默认值.

第七个参数 hierarchy : 可选的层次结构信息,有默认值.

第八个参数 maxLevel : 表示用于绘制轮廓的最大等级,有默认值.

第九个参数 offset : 可选的轮廓偏移参数,用指定的偏移量offset = (dx, dy)偏移需要绘制的轮廓,有默认值.

# -*- coding:utf-8 -*-import cv2# Step1. 读入图像,并转换成灰度图像image = cv2.imread('images/000.jpg', 0)cv2.imshow("gray",image )# Step2. 二值化ret, thresh = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)# Step3. 轮廓提取image, contour, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# Step4. 轮廓绘制color = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)dst = cv2.drawContours(color, contour, -1, (0,255,0), 2)cv2.imshow("dst", dst)cv2.waitKey(0)

更具体的函数介绍可以点击此

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。