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中的map、reduce和filter浅析
Apr 26 Python
Python中函数的多种格式和使用实例及小技巧
Apr 13 Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
python之mock模块基本使用方法详解
Jun 27 Python
pandas计算最大连续间隔的方法
Jul 04 Python
python处理excel绘制雷达图
Oct 18 Python
python绘制彩虹图
Dec 16 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
Jun 15 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
Aug 11 Python
Python语法学习之进程的创建与常用方法详解
Apr 08 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
php数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
JavaScript高级程序设计
2006/12/29 Javascript
javascript新手语法小结
2008/06/15 Javascript
jquery tab标签页的制作
2010/05/10 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
js showModalDialog弹出窗口实例详解
2014/01/07 Javascript
javascript实现微信分享
2014/12/23 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
python发送邮件功能实现代码
2016/07/15 Python
推荐10款最受Python开发者欢迎的Python IDE
2018/09/16 Python
django-allauth入门学习和使用详解
2019/07/03 Python
python字符串反转的四种方法详解
2019/12/02 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
logging level级别介绍
2020/02/21 Python
django创建css文件夹的具体方法
2020/07/31 Python
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
搬家公司的创业计划书
2014/01/01 职场文书
行政助理的岗位职责
2014/02/18 职场文书
激励员工的口号
2014/06/16 职场文书
离婚协议书怎么写
2014/09/12 职场文书
认错检讨书
2014/10/02 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL