当前位置: 首页 > wzjs >正文

网站建设上传视频教程图片外链在线生成

网站建设上传视频教程,图片外链在线生成,《php与mysql网站开发全接触》光盘源码.rar,wordpress首页导航代码【1】引言 前序学习进程中,在对图像进行边缘识别的基础上,先后进行了边缘轮廓绘制,矩形标注、圆形标注和凸包标注。相关文章包括且不限于: python学opencv|读取图像(六十四)使用cv2.findContours()函数cv…

【1】引言

前序学习进程中,在对图像进行边缘识别的基础上,先后进行了边缘轮廓绘制,矩形标注、圆形标注和凸包标注。相关文章包括且不限于:

python学opencv|读取图像(六十四)使用cv2.findContours()函数+cv2.drawContours()函数实现图像轮廓识别和标注-CSDN博客

python学opencv|读取图像(六十五)使用cv2.boundingRect()函数实现图像轮廓矩形标注-CSDN博客


python学opencv|读取图像(六十六)使用cv2.minEnclosingCircle函数实现图像轮廓圆形标注-CSDN博客

实际上,除了按照边缘轮廓来绘制线条进行标注外,其他的三种标注方式都不够精确,而且对图像的构成要求很高。但按照边缘轮廓来绘制线条进行标注,需要调用两个函数,先识别边缘,再绘制线条,实际上的描边效果会有一些线条的堆砌,整体效果依然不够精准和高效。

为此,如果有一种直接进行边缘检测然后标注的方法,将会使得图像识别的效果大大增强。这就是本次课程学习的目标:使用cv2.Canny()函数实现图像边缘检测。

【2】官网教程

点击下述链接,直达cv2.Canny()函数的官网教程:

OpenCV: Feature Detection

官网页面对 cv2.Canny()函数的说明为:

图1  官网页面对 cv2.Canny()函数的说明

相应的,官网页面对 cv2.Canny()函数的参数说明为:

    cv.Canny(    

image                      #输入图像

threshold1               #第一个阈值

threshold2               #第二个阈值

edges                      #输出图像

apertureSize           #sober operator的尺寸,可选参数,暂无需关注

L2gradient   )

关于 apertureSize 对应的sober operator的尺寸,可以通过下述链接了解:

OpenCV: Sobel Derivatives

【3】代码测试

首先引入必要模块,进行图像读取:

import cv2 as cv # 引入CV模块
import numpy as np #引入numpy模块# 读取图片
src = cv.imread('srcoo.png') #读取图像

然后进行图像边缘检测:

#边缘检测
r1=cv.Canny(src,10,50)  #边缘检测
r2=cv.Canny(src,100,150) #边缘检测
r3=cv.Canny(src,255,500) #边缘检测
r4=cv.Canny(src,255,800) #边缘检测

上述不同的检测输出,是由于上下的阈值不同。

然后进行图像显示和保存:

#显示和保存图像
r5=np.hstack((r3,r4))
cv.imshow('r',src)
cv.imshow('r1',r1)
cv.imshow('r2',r2)
cv.imshow('r3',r3)
cv.imshow('r5',r5)cv.waitKey()  # 图像不关闭
cv.destroyAllWindows()  # 释放所有窗口

图像运行相关的图像有:

图2 初始图像

图3 阈值(10,50)对应检测效果Canny-r1.png 

图4 阈值(100,150)对应检测效果Canny-r2.png 

图5 阈值(255,500)对应检测效果Canny-r3.png 

图5 阈值(255,500)和(255,800)对应检测效果Canny-r5.png 

由图2到图5可见,随之阈值的增大,图像的细节越来越少;随之阈值差距的增大,图像的细节也越来越少。

此时的完整代码为:

import cv2 as cv # 引入CV模块
import numpy as np #引入numpy模块# 读取图片
src = cv.imread('srcoo.png') #读取图像#边缘检测
r1=cv.Canny(src,10,50)  #边缘检测
r2=cv.Canny(src,100,150) #边缘检测
r3=cv.Canny(src,255,500) #边缘检测
r4=cv.Canny(src,255,800) #边缘检测
#b=cv.split(r2)
#g=cv.split(r4)
#print('r3.shape=',r3.shape)
#print('b=',b)
#print('g=',g)#显示和保存图像
r5=np.hstack((r3,r4))
cv.imshow('r',src)
cv.imshow('r1',r1)
cv.imwrite('Canny-r1.png', r1) #保存图像
cv.imshow('r2',r2)
cv.imwrite('Canny-r2.png', r2) #保存图像
cv.imshow('r3',r3)
cv.imwrite('Canny-r3.png', r3) #保存图像
cv.imshow('r5',r5)
cv.imwrite('Canny-r5.png', r5) #保存图像cv.waitKey()  # 图像不关闭
cv.destroyAllWindows()  # 释放所有窗口

【4】细节说明

如果仔细思考,会发现阈值可以使用超过255的数据。

这是因为cv2.Canny函数对应的算法中:阈值的低值是进行阈值转化的判断开关,而阈值的高值则直接影响了如何进行阈值转化。官网的说明页中,没有对阈值进行限制。

The smallest value between threshold1 and threshold2 is used for edge linking. The largest value is used to find initial segments of strong edges

【5】总结

掌握了python+opencv通过使用cv2.Canny()函数对图像进行边缘检测的技巧。

http://www.dtcms.com/wzjs/28304.html

相关文章:

  • 万州网站建设2019网站seo
  • 网站有信心做的更好热门网站
  • 怎么学习企业网站维护2023年百度小说风云榜
  • 做网站首选什么语言推广代理
  • 做3d图的网站有哪些软件seo关键词优化排名外包
  • seo综合查询站长工具最有效的网络推广方式和策略
  • 南昌建设人才网站电商平台开发
  • 做美工比较好的网站百度云盘资源搜索
  • 杭州教育网站建设免费h5制作网站
  • 电商网站怎么建设投广告的平台有哪些
  • 营销推广有哪些形式上海网络seo优化公司
  • 网站开发背景图片磁力引擎
  • 想搞网站建设百度推广公司
  • 东莞市做网站的公司网站排名seo软件
  • 济南做网站优化公司软文推广300字
  • 电子商务网站硬件建设的核心是广州市新闻发布
  • 做电影网站需要空间吗chrome官方下载
  • 上海装修公司排名有哪些seo优化网站教程
  • 幼儿园网站建设运行情况网络推广运营团队
  • 网站建设课程报告seo推广有哪些
  • 厦门市建设局网站住房保障就业seo好还是sem
  • 公司网站建设的分类整站优化要多少钱
  • 简述营销网站建设策略网络营销的作用和意义
  • 做毕业论文需要哪些网站百度seo搜索引擎优化方案
  • 雪亮工程建设网站界面东莞网站制作外包
  • 中国建设银行网站上不去无锡百度推广公司哪家好
  • 网站开发分为几个方向百度广告服务商
  • 做游戏排行榜的网站模板网址查询域名
  • java电影网站开发视频如何写推广软文
  • linux做网站1G内存够不seo关键词优化是什么意思