计算机视觉开源库OpenCV绘制轮廓,并将轮廓排序~示例效果如下:

原图:

示例代码如下:

#!/usr/bin/env python3import cv2def sort_contours(cnts, method="left-to-right"):reverse = Falsei = 0if method == "right-to-left" or method == "bottom-to-top":reverse = Trueif method == "top-to-bottom" or method == "bottom-to-top":i = 1boundingBoxes = [cv2.boundingRect(c) for c in cnts](cnts, boundingBoxes) = zip(*sorted(zip(cnts, boundingBoxes),key=lambda b:b[1][i], reverse=reverse))return (cnts, boundingBoxes)def draw_contour(image, c, i):M = cv2.moments(c)cX = int(M["m10"] / M["m00"])cY = int(M["m01"] / M["m00"])cv2.putText(image, "#{}#".format(i + 1), (cX-35, cY+10), cv2.FONT_HERSHEY_SIMPLEX,1.0, (0, 255, 0), 2)return imageimage = cv2.imread("cntdemo.jpg")
cv2.imshow("Input Image", image)gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
_, binimg = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)_, contours, _ = cv2.findContours(binimg, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)contours = sorted(contours, key=cv2.contourArea, reverse=False)[:3]
cv2.drawContours(image, contours, -1, (0, 0, 255), 2)(contours, boundingBoxes) = sort_contours(contours, method="left-to-right")for (i, c) in enumerate(contours):draw_contour(image, c, i)cv2.imshow("Result Image", image)cv2.waitKey(0)
cv2.destroyAllWindows()

计算机视觉开源库OpenCV绘制轮廓,并将轮廓排序~相关推荐

  1. 计算机视觉开源库OpenCV之绘制轮廓函数cv2.drawContours()介绍

    计算机视觉开源库OpenCV之绘制轮廓函数cv2.drawContours(),用于轮廓的绘制或填充. cv2.drawContours(image, contours, contourIdx, co ...

  2. 计算机视觉开源库OpenCV之查找轮廓函数cv2.findContours()介绍

    计算机视觉开源库OpenCV之查找轮廓函数cv2.findContours说明如下: 示例代码: #!/usr/bin/env python3import cv2image = cv2.imread( ...

  3. 计算机视觉开源库OpenCV之利用开操作(Opening Operation)修复受损照片方法

    计算机视觉开源库OpenCV之利用开操作(Opening Operation)修复受损照片,开运算即为:先腐蚀再膨胀. 原图片,俄罗斯少女,挺漂亮的,但是照片上有白线.我们的任务就是去掉这些白线... ...

  4. 计算机视觉开源库OpenCV之图像翻转

    计算机视觉开源库OpenCV之图像翻转,包括水平翻转.上下翻转.水平翻转后上下翻转等,函数为为cv2.flip(). 效果如下: 示例代码如下: #!/usr/bin/env python3 impo ...

  5. 计算机视觉-计算机视觉开源库OpenCV基础

    1.加载.显示.保存图像 import argparse import cv2ap = argparse.ArgumentParser() ap.add_argument("-i" ...

  6. 计算机视觉开源库OpenCV梯度之Sobel算子

    Sobel算子是像素图像边缘检测中最重要的算子之一,在机器学习.数字媒体.计算机视觉等信息科技领域起着举足轻重的作用.在技术上,它是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度之近似值.在图 ...

  7. 计算机视觉开源库OpenCV之CommandLineParser使用方法

    今天看看OpenCV官网教程,发现有CommandLineParser这个类,使用起来还是挺方便的. 示例代码如下: #include <iostream> #include <op ...

  8. 计算机视觉开源库OpenCV添加文字cv2.putText()参数详解

    cv2.putText(img, text, org, fontFace,fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]]) ...

  9. 计算机视觉开源库OpenCV之边缘检测cv2.canny()函数

    函数原型 edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]]) 参数解释 im ...

最新文章

  1. An improved genome reference for the African cichlid, Metriaclima zebra 非洲慈鲷,斑马宫丽鱼的改良基因组参考
  2. Eclipse之实用快捷键
  3. java监听某端口和ip_Java 通过Socket监听指定服务器(IP)的指定端口,及向指定服务器的指定端口发送信息...
  4. java数组复制的方式和效率比较
  5. STL之string类型
  6. php cms专题,在phpcms中给专题每个不同分类设置独立模板
  7. tf.truncated_normal_initializer 从截断的正态分布中输出随机值。
  8. 【Flink】FLink Barrier 在流经算子 做 checkpoint 的时候,数据是停止的吗?
  9. 九度OJ 1207 质因数的个数
  10. C#.Net工作笔记015---C#中Decimal类型四舍五入_小数点截位
  11. 含HTML标记的内容分页 (C#)
  12. python课设带报告_python实时投票系统的课设报告
  13. TouchRetouch CR2 2.1.1 特别版 Mac 扣图修图软件
  14. Preparing Your Data for Use with robot_localization 准备 robot_localization 数据
  15. 安卓平台模拟软件绑定的手机(号码)以及地理位置
  16. 什么是生物质发电?生物质发电有哪些方法?
  17. lg-1 x 怎么算_纯爱|电竞新文《队友太会撒娇了怎么办》《转会后我成了团宠》...
  18. 【数据分析实战】杭州2019年链家在售房源数据分析
  19. LeetCode 37. 解数独 Sudoku Solver
  20. 网站开发-php开发手机论坛(11)-用户中心

热门文章

  1. CF510 D - Fox And Jumping(GCD问题)
  2. ffmpeg常用转换命令,支持WAV转AMR
  3. 十大不变计算机网络安全法则
  4. mdi 子窗体 菜单 不合并。
  5. hibernate 最新 jar 下载
  6. 初识前端——个人总结
  7. 2月1日学习内容整理:算法
  8. Linux学习之命令【1】
  9. Unisys:信息安全新关键——微分割
  10. oracle和SQLserver数据库中select into 的区别