Python Opencv任意形状目标检测并绘制框图


Posted in Python onJuly 23, 2019

opencv 进行任意形状目标识别,供大家参考,具体内容如下

工作中有一次需要在简单的图上进行目标识别,目标的形状不固定,并且存在一定程度上的噪声影响,但是噪声影响不确定。这是一个简单的事情,因为图像并不复杂,现在将代码公布如下:

import cv2


def otsu_seg(img):

  ret_th, bin_img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)

  return ret_th, bin_img

def find_pole(bin_img):
  img, contours, hierarchy = cv2.findContours(bin_img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
  area = 0
  for i in range(len(contours)):
    area += cv2.contourArea(contours[i])
  area_mean = area / len(contours)
  mark = []
  for i in range(len(contours)):
    if cv2.contourArea(contours[i]) < area_mean:
      mark.append(i)

  return img, contours, hierarchy, mark

def draw_box(img,contours):
  img = cv2.rectangle(img,
         (contours[0][0], contours[0][1]),
         (contours[1][0], contours[1][1]),
         (255,255,255),
         3)
  return img

def main(img):
  ret, th = otsu_seg(img)
  img_new, contours, hierarchy, mark = find_pole(th)
  for i in range(len(contours)):
    if i not in mark:
      left_point = contours[i].min(axis=1).min(axis=0)
      right_point = contours[i].max(axis=1).max(axis=0)
      img = draw_box(img, (left_point, right_point))
  return img


if __name__ =="__main__":
  img = cv2.imread('G:/test.png')
  img = main(img)
  cv2.imwrite('G:/test_d.png', img)

Python Opencv任意形状目标检测并绘制框图

结果图如下:

Python Opencv任意形状目标检测并绘制框图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入Python解释器理解Python中的字节码
Apr 01 Python
Python生成密码库功能示例
May 23 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
python实现聚类算法原理
Feb 12 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
Python编程图形库之Pillow使用方法讲解
Dec 28 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
扩展Django admin的list_filter()可使用范围方法
Aug 21 Python
python logging设置level失败的解决方法
Feb 19 Python
详解Pycharm安装及Django安装配置指南
Sep 15 Python
Django用户认证系统如何实现自定义
Nov 12 Python
flask框架单元测试原理与用法实例分析
Jul 23 #Python
Python3的高阶函数map,reduce,filter的示例详解
Jul 23 #Python
python实现socket+threading处理多连接的方法
Jul 23 #Python
简单了解Django ContentType内置组件
Jul 23 #Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 #Python
python设计tcp数据包协议类的例子
Jul 23 #Python
Django 缓存配置Redis使用详解
Jul 23 #Python
You might like
用Zend Encode编写开发PHP程序
2006/10/09 PHP
CURL状态码列表(详细)
2013/06/27 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
2016/07/25 Javascript
JavaScript设计模式之策略模式详解
2017/06/09 Javascript
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
[10:05]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD 选手采访
2021/03/11 DOTA
python正则表达式抓取成语网站
2013/11/20 Python
python的变量与赋值详细分析
2017/11/08 Python
selenium获取当前页面的url、源码、title的方法
2019/06/12 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
Django serializer优化类视图的实现示例
2020/07/16 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
市场营销战略计划书
2014/05/06 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
初中优秀学生评语
2014/12/29 职场文书
班主任寄语2015
2015/02/26 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
2015年科室工作总结
2015/04/10 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
redis 查看所有的key方式
2021/05/07 Redis
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL