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

做视频招标的网站有哪些创办网站需要什么

做视频招标的网站有哪些,创办网站需要什么,做电台需要的文章从哪个网站找,文山 砚山 网站建设一、概述 轮廓检测是计算机视觉中的基础技术,用于识别和提取图像中物体的边界。与边缘检测不同,轮廓检测更关注将边缘像素连接成有意义的整体,形成封闭的边界。 轮廓检测的核心价值 - 物体识别:通过轮廓可以识别图像中的独立物体…

一、概述

       轮廓检测是计算机视觉中的基础技术,用于识别和提取图像中物体的边界。与边缘检测不同,轮廓检测更关注将边缘像素连接成有意义的整体,形成封闭的边界。

轮廓检测的核心价值
- 物体识别:通过轮廓可以识别图像中的独立物体
- 形状分析:轮廓包含了物体的形状特征信息
- 测量计算:基于轮廓可进行面积、周长等测量
- 图像分割:是许多分割算法的基础步骤

二、OpenCV轮廓检测基础

1.cv2.findContours

2. cv2.drawContours()

3.示例代码


#查找轮廓的API:image,contours,hierarchy = cv2.findContours(img, mode, method)#
# 参数:img:需要实现轮廓检测的原图# mode:轮廓的检索模式,主要有四种方式:
#      CV2.RETR_EXTERNAL:只检测外轮廓,所有子轮廓被忽略并
#      CV2.RETR_LIST:检测的轮廓不建立等级关系,所有轮廊属于同一等级
#      CV2.RETR_CCOMP:返回所有的轮廓,只建立两个级的轮。一个对象的外轮为第1级组织结构。
#          而对象内部中空洞的轮廊为第2级组织结构,空洞中的任何对象的轮又是第 1级组织结构。
#      cV2.RETR_TREE:返回所有的轮廓,建立一个完整的组织结构的轮廓。# method:轮廓的近似方法,主要有以下两种:
#      CV2.CHAIN APPROX NONE:在储所有的轮点。
#      CV2.CHAIN_APPROX_SIMPLE:压缩模式,只保留该方向的终点坐标,例如一个矩形轮廊只需4 个点来保存轮信息。
# 返回:image:返回处理的原图# contours:包含图像中所有轮廊的list对象。其中每一个独立的轮廊信息以边界点坐标(x,y)的形式储存在numpy数组中。# hierarchy:轮廊的层次结构。一个包含4个值的数组:[Next,Previous,First child, Parent]
#     Next:与当前轮廓处于同一层级的下一条轮
#     Previous:与当前轮廓处于同一层级的上一条轮
#     First child:当前轮廓的第一条子轮康
#     Parent:当前轮廓的父轮廓并
# 注意:做轮廊检测前需要将图片读取为二值数据,即像素值只为0和255.import cv2
phone = cv2.imread('phone.png')
phone_grey=cv2.cvtColor(phone,cv2.COLOR_BGR2GRAY)
cv2.imshow('phone_b',phone_grey)
cv2.waitKey(0)ret,phone_binary=cv2.threshold(phone_grey,120,255,cv2.THRESH_BINARY)
cv2.imshow('phone_binary',phone_binary)
cv2.waitKey(0)_,contours,hierarchy = cv2.findContours(phone_binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)# # 轮廓的绘制
# # cv2.drawContours(image, contours, contourIdx, color, thickness=None,
# #                  lineType=None, hierarchy=None, maxLevel=None, offset=None)
# # 参数含义如下:
# # image:要在其上绘制轮廓的输入图像。
# # contours:轮廓列表,通常由cv2.findContours()函数返回。
# # contourIdx:要绘制的轮廓的索引。如果为负数,则绘制所有轮廓。 -1
# # color:轮廓的颜色,以BGR格式表示。例如,(0, 255, 0)表示绿色。
# # thickness:轮廓线的粗细。默认值为1。
# # lineType:轮廓线的类型。默认值为cv2.LINE_8。
# # hierarchy:轮廓层次结构。通常由cv2.findContours()函数返回。
# # maxLevel:绘制的最大轮廓层级。默认值为None,表示绘制所有层级。
# # offset:轮廓点的偏移量。默认值为None。
image_copy=phone.copy()
image_copy=cv2.drawContours(image=image_copy,contours=contours,contourIdx=-1,color=(0,255,0),thickness=2)
cv2.imshow('Contours',image_copy)
cv2.waitKey(0)
cv2.destroyAllWindows()

 三、轮廓特征提取与分析

1. 基本特征计算


面积

  
周长



 

import cv2phone = cv2.imread('phone.png')
phone_grey=cv2.cvtColor(phone,cv2.COLOR_BGR2GRAY)
cv2.imshow('phone_b',phone_grey)
cv2.waitKey(0)ret,phone_binary=cv2.threshold(phone_grey,120,255,cv2.THRESH_BINARY)
cv2.imshow('phone_binary',phone_binary)
cv2.waitKey(0)_,contours,hierarchy = cv2.findContours(phone_binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)# #轮廓特征
# cv2.contourArea(contour[, oriented]) → retval      面积
# contour:顶点构成的二维向量组(如轮廓列表contours中的一个轮廓)
# oriented:定向区域标志,默认值为 False,返回面积的绝对值,Ture 时则根据轮廓方向返回带符号的数值area_0 = cv2.contourArea(contours[0])
print(area_0)
area_1 = cv2.contourArea(contours[1])
print(area_1)# arcLength(InputArray curve, bool closed)              周长
# curve,输入的二维点集(轮廓顶点),可以是 vector 或 Mat 类型。
# closed,用于指示曲线是否封闭。
length = cv2.arcLength(contours[0],closed=True)
print(length)
# 根据面积显示特定轮廓
a_list=[]
# for i in range(len(contours)):
#     if cv2.contourArea(contours[i])>10000:
#         a_list.append(contours[i])
for i in contours:if cv2.contourArea(i)>10000:a_list.append(i)
image_copy = phone.copy()
image_copy = cv2.drawContours(image=image_copy, contours=a_list, contourIdx=-1,color=(0,255,0),thickness=3)
cv2.imshow('Contours_show_10000', image_copy)
cv2.waitKey(0)

2. 轮廓近似

# 轮廓的近似
# approx = cv2.approxPolyDP(curve, epsilon, closed)
# 参数说明:
# curve:输入轮廓。
# epsilon:近似精度,即两个轮廓之间最大的欧式距离。该参数越小,得到的近似结果越接近实际轮廓;反之,得到的近似结果会更加粗略。
# closed:布尔类型的参数,表示是否封闭轮廓。如果是 True,表示输入轮廓是封闭的,近似结果也会是封闭的;否则表示输入轮廓不是封闭的,近似结果也不会是封闭的。
# 返回值:approx:近似结果,是一个ndarray数组,为1个近似后的轮廓,包含了被近似出来的轮廓上的点的坐标
import cv2phone = cv2.imread('phone.png')
phone_gray = cv2.cvtColor(phone,cv2.COLOR_BGR2GRAY) #转换为灰度图
ret,phone_thresh = cv2.threshold(phone_gray,120,255,cv2.THRESH_BINARY)  #二值化image, contours, hierarchy = cv2.findContours(phone_thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)#获取轮廓
# #计算所有轮廓面积并存储在列表中
contours_with_area=[(cnt,cv2.contourArea(cnt)) for cnt in contours]
#根据轮廓面积降序排列
sorted_contours=sorted(contours_with_area,key=lambda x:x[1],reverse=True)
#如果你只需要降序后的轮廓,可以直接提取出来
aa=sorted_contours[0][0]
print(aa)epsilon = 0.01 * cv2.arcLength(aa,True)        #设置近似精度
approx = cv2.approxPolyDP(aa, epsilon, True)   #对轮廓进行近似
print(approx.shape)
phone_new = phone.copy()
image_contours = cv2.drawContours(phone_new,[approx],contourIdx=-1,color=(0,255,0),thickness=3)#绘制轮廓
cv2.imshow('phone',phone)
cv2.waitKey(0)
cv2.imshow('image_contours',image_contours)
cv2.waitKey(0)
# # $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
# # 外接圆、外接矩形,...
cnt = contours[6]
(x,y),r = cv2.minEnclosingCircle(cnt)#计算轮廓的外接圆
phone_circle = cv2.circle(phone,(int(x),int(y)),int(r),(0,255,0),2)#绘制外接圆的方法
cv2.imshow('phone_circle',phone_circle)
cv2.waitKey(0)x,y,w,h = cv2.boundingRect(cnt)#计算轮廓的最小外接矩形
phone_rectangle = cv2.rectangle(phone,(x,y),(x+w,y+h),(0,255,0),2)  #在图像上绘制矩形
cv2.imshow('phone_rectangle',phone_rectangle)
cv2.waitKey(0)

3. 轮廓匹配


# 形状匹配(值越小匹配越好)
match_value = cv2.matchShapes(cnt1, cnt2, cv2.CONTOURS_MATCH_I1, 0)# 模板匹配
template = cv2.imread('template.png',0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(gray, template, cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where(res >= threshold)

总结

       OpenCV的轮廓检测功能强大而灵活,从简单的物体识别到复杂的形状分析都能胜任。掌握轮廓检测技术需要注意以下几点:
1. 良好的预处理是成功的关键
2. 根据应用场景选择合适的轮廓检索模式
3. 合理利用轮廓特征进行筛选和分析
4. 高级应用常需要结合其他图像处理技术


文章转载自:

http://3r5hUbKb.jzykw.cn
http://RyVqQKuk.jzykw.cn
http://GLBgT2Iy.jzykw.cn
http://ASGOtZDs.jzykw.cn
http://ukgYijOY.jzykw.cn
http://bM4GlVcr.jzykw.cn
http://EtW8tdwa.jzykw.cn
http://UejrU6WZ.jzykw.cn
http://mcDuSCp7.jzykw.cn
http://DQnfhNoI.jzykw.cn
http://TAkf0eAS.jzykw.cn
http://GDMtn3AY.jzykw.cn
http://CQjvpNWi.jzykw.cn
http://T7xJTrIZ.jzykw.cn
http://0Wyn32M2.jzykw.cn
http://reCN7mlU.jzykw.cn
http://PmGj9k9b.jzykw.cn
http://trNmn2GO.jzykw.cn
http://M2Cl82BG.jzykw.cn
http://9yvyNy7W.jzykw.cn
http://jNcXyj80.jzykw.cn
http://XPtS7hBX.jzykw.cn
http://QZc6esca.jzykw.cn
http://x8HyhBGC.jzykw.cn
http://F4vAlIVp.jzykw.cn
http://toTFYNqP.jzykw.cn
http://I9AwK60o.jzykw.cn
http://XeYyiqv2.jzykw.cn
http://Wc3Y44xx.jzykw.cn
http://weCv5HZc.jzykw.cn
http://www.dtcms.com/wzjs/768223.html

相关文章:

  • 网站建设公司的客户ppt要怎么做网站
  • 网站建设与管理任务分工网站开发人员招聘
  • 做柜子网站做一个卖货的app要多少钱
  • 网业公司宁波seo外包服务平台
  • 百度网站权重排名30天网站建设全程实录
  • 美食网站html代码网站 免费 认证
  • 高端设计网站最好的网站制作公司
  • php网站开发框架搭建wordpress会计模板下载
  • 网站开发维护承担的法律责任网络工程师证书含金量
  • 图书网站建设实训总结上海企业服务云app
  • 网站运营如何做学历提升入口
  • 浦口建设局网站广州网站建设兼职
  • 网站制作好在百度里可以搜到吗西宁百姓网
  • 播州区建设局网站wordpress订单查询
  • 网站安全防护网页制作登录界面代码
  • 如何制作课程网站模板下载地址信誉好的营销单页网站
  • 网站建设销售需要懂的知识cms是什么材料
  • 深圳 网站建设vs做网站头部的代码
  • 自带浏览器建设银行网站打不开青岛网站关键词排名优化
  • 乐清品牌网站建设网络免费推广平台
  • 长沙营销网站设计wordpress cdn 非插件
  • 公司网站建设说明书wordpress阅读全文
  • 如何让单位网站做防护wordpress怎样比较安全
  • 学校的网站怎么做的好如何进入wordpress前台
  • 杭州 网站制作百度网站验证怎么做
  • 监控企业网站模板东莞网上推广
  • 网站栏目结构哪些wordpress怎么烤别人的
  • 公司电商网站开发合同范本东道设计公司怎么样
  • 网站被黑怎么恢复微信小程序游戏制作
  • 为什么要建设就业指导网站深圳网站制作 论坛