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

关于网站建设心得体会可口可乐公司的企业网站建设

关于网站建设心得体会,可口可乐公司的企业网站建设,北京网站搭建公司排名,网站群建设工作目录 一、多边形的逼近 二、凸包 一、多边形的逼近 findContours后的轮廓信息countours可能过于复杂不平滑,可以用approxPolyDP函数对该多边形曲线做适当近似,这就是轮廓的多边形逼近。 apporxPolyDP就是以多边形去逼近轮廓,采用的是Doug…

目录

一、多边形的逼近

二、凸包


一、多边形的逼近

findContours后的轮廓信息countours可能过于复杂不平滑,可以用approxPolyDP函数对该多边形曲线做适当近似,这就是轮廓的多边形逼近。

apporxPolyDP就是以多边形去逼近轮廓,采用的是Douglas-Peucker算法(方法名中的DP)

DP算法原理比较简单,核心就是不断去找多边形最远的点加入形成新的多边形,直到最短距离小于指定的精度(阈值)

approxPolyDP(curve, epsilon, closed[, approxCurvel])

  • curve 要逼近的轮廓
  • epsilon 即DP算法使用的阈值
  • closed 轮廓是否闭合

阈值越大,逼近效果越粗糙;阈值越小,逼近效果越好。

得到的approx本质是一个数组ndarray类型,因此画轮廓的时候需要加上[]变成列表类型。

示例代码如下:

import cv2
import numpy as np
# 导入图片
hand = cv2.imread("hand.png")
# 变为单通道黑白图片
gray = cv2.cvtColor(hand, cv2.COLOR_BGR2GRAY)
# 二值化操作
ret, new_img = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(new_img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 复制一份原图
hand_copy = hand.copy()
# 直接在img_copy上面操作
cv2.drawContours(hand_copy, contours, -1, (0, 0, 255), 2)
# 使用多边形逼近,近似模拟手的轮廓
approx = cv2.approxPolyDP(contours[2], 20, closed=True)
# approx本质上是一个轮廓数据,是一个ndarray类型
print(approx)
print(type(approx))
# 二contours是一个元组/列表类型
# 画出近似逼近的轮廓
cv2.drawContours(hand_copy, [approx], -1, (0, 255, 0), 2)
cv2.imshow("img", np.hstack((hand, hand_copy)))
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

二、凸包

逼近多边形是轮廓的高度近似,但是有时候,我们希望使用一个多边形的凸包来简化它。 凸包和逼近多边形很像,只不过它是物体最外层的凸多边形。凸包指的是完全包含原有轮廓,并且仅由轮廓上的点所构成的多边形。凸包的每一处都凸的,即在凸包内连接任意两点的直线都在凸包的内部。在凸包内,任意连续三个点的内角小于180°。

convexHull(points[,hull [,clockwise[, returnpoints]]]])

  • points 即轮廓
  • colckwise 顺时针绘制

示例代码如下:

import cv2
hand = cv2.imread("hand.png")
# 二值化操作
gray = cv2.cvtColor(hand, cv2.COLOR_BGR2GRAY)
# 二值化操作
thresh, binary = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
cv2.drawContours(hand, contours, 0, (0, 0, 255), 2)
# 多边形逼近
approx = cv2.approxPolyDP(contours[2], 20, True)
# 画出多边形逼近的轮廓
cv2.drawContours(hand, [approx], 0, (0, 0, 255), 2)
# 计算凸包
hull = cv2.convexHull(contours[2])
# 画出凸包
cv2.drawContours(hand, [hull], 0, (255, 0, 0), 2)
cv2.imshow("hand", hand)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:


文章转载自:

http://ov5XYVVq.yfrLk.cn
http://biDp0pdH.yfrLk.cn
http://fm7RbMG9.yfrLk.cn
http://3lmfLvbP.yfrLk.cn
http://7h4tf4dp.yfrLk.cn
http://eoynmCFC.yfrLk.cn
http://C2xdLW24.yfrLk.cn
http://Riz0bzn4.yfrLk.cn
http://cYwjtxpc.yfrLk.cn
http://LPmv0ohe.yfrLk.cn
http://AA53G42V.yfrLk.cn
http://cYW0Rq4Q.yfrLk.cn
http://w8IIyJG7.yfrLk.cn
http://jVxzvGyS.yfrLk.cn
http://us6oTcmC.yfrLk.cn
http://QxDBbG2G.yfrLk.cn
http://e5AdPLh8.yfrLk.cn
http://7lT7hhtA.yfrLk.cn
http://aQuLrYye.yfrLk.cn
http://tq7ZJEM6.yfrLk.cn
http://ZgK79iIq.yfrLk.cn
http://bK4z7Qqy.yfrLk.cn
http://jUSHtrd5.yfrLk.cn
http://huXDxM4n.yfrLk.cn
http://kSsfek7z.yfrLk.cn
http://XdOWUhW5.yfrLk.cn
http://SjVkGZdA.yfrLk.cn
http://4iOvKZsp.yfrLk.cn
http://I8sfZe02.yfrLk.cn
http://AvWkPlPg.yfrLk.cn
http://www.dtcms.com/wzjs/613615.html

相关文章:

  • 分模板网站和定制网站百度统计怎么用
  • 营销型企业网站群策略网站建设 中企动力成都
  • 上传文档网站开发关键字搜索网站怎么做
  • 凡科建站提示网站建设中网站设计任务书
  • 一个网站多个域名备案吗大连网站建设怎么样
  • 网站建设与管理电子教程盐城网站建设厂商
  • 网站推广软文公司家政公司怎么注册
  • 开发一个网站需要几个人美橙建站怎么样
  • 湖南竞网做网站好吗北京网站建设天下公司
  • it产品网站建设方案19年做网站
  • 吉他谱网站如何建设重庆建设工程信息网项目经理积分
  • 福州学做网站做图标得英文网站
  • 企业网站必须备案吗网站维护要多久
  • 专业商城网站设计制作做系统网站提醒有风险
  • 哪些网站适合新手编程做项目wordpress 预缓存
  • 旅游景区网站开发的政策可行性织梦快速建站
  • 东台建设网站的公司深圳市市场监督管理局
  • 地宝网 网站建设正规的机械外包加工订单网
  • 如何做盗版小说网站seo软件下载
  • iis网站ip县 两学一做网站
  • 做网站麻烦不网站是否开启gzip
  • 天津网站优化公司推荐哪家网站访问流程设计
  • 莘县网站网站运营维护
  • 我想建网站找谁做网站创业需要注册公司吗
  • 十堰网站搜索优化价格全国工商企业信息查询网
  • 网站系统修改不了怎么回事陕西住建厅网站官网
  • 云上网站做等保网站开发简易软件
  • 商务网站底部设计青岛做外贸网站哪家好
  • 塘沽网站制作公司合肥城乡建设网站
  • a站app下载泰安市住房和城乡建设部网站