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二叉树的实现实例
Nov 21 Python
python选择排序算法实例总结
Jul 01 Python
Django Admin实现上传图片校验功能
Mar 06 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
python 通过xml获取测试节点和属性的实例
Mar 31 Python
浅谈python配置与使用OpenCV踩的一些坑
Apr 02 Python
Python matplotlib的使用并自定义colormap的方法
Dec 13 Python
Python3.5装饰器典型案例分析
Apr 30 Python
详解Python字符串切片
May 20 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
Aug 06 Python
django在开发中取消外键约束的实现
May 20 Python
python中pd.cut()与pd.qcut()的对比及示例
Jun 16 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
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
基于php伪静态的实现详细介绍
2013/04/28 PHP
php文件读取方法实例分析
2015/06/20 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
JS控制表格隔行变色
2006/06/26 Javascript
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
Jquery写一个鼠标拖动效果实现原理与代码
2012/12/24 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
在jquery boxy中添加百度地图坐标拾取注意流程
2014/04/03 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
详解vue中组件参数
2018/07/09 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
如何利用node转发请求详解
2020/09/17 Javascript
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
django解决跨域请求的问题详解
2019/01/20 Python
Python自定义一个异常类的方法
2019/06/27 Python
django的autoreload机制实现
2020/06/03 Python
详解Python流程控制语句
2020/10/28 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
html5使用window.postMessage进行跨域实现数据交互的一次实战
2021/02/24 HTML / CSS
枚举和一组预处理的#define有什么不同
2016/09/21 面试题
会计电算化应届生求职信
2013/11/03 职场文书
大专会计自我鉴定
2014/02/06 职场文书
关于运动会的广播稿
2014/09/22 职场文书
求职简历自我评价2015
2015/03/10 职场文书
幸福终点站观后感
2015/06/04 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
golang中的struct操作
2021/11/11 Golang