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的一些用法分享
Oct 07 Python
Python类定义和类继承详解
May 08 Python
Python中每次处理一个字符的5种方法
May 21 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
pytorch常见的Tensor类型详解
Jan 15 Python
Python接口测试get请求过程详解
Feb 28 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
Python更改pip镜像源的方法示例
Dec 01 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
Feb 23 Python
Python List remove()实例用法详解
Aug 02 Python
关于的python五子棋的算法
May 02 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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
教你如何把一篇文章按要求分段
2006/10/09 PHP
解析php中的escape函数
2013/06/29 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
Yii2中SqlDataProvider用法示例
2016/09/22 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
PHP验证类的封装与使用方法详解
2019/01/10 PHP
php array_map()函数实例用法
2021/03/03 PHP
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
extjs中grid中嵌入动态combobox的应用
2011/01/01 Javascript
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
基于jQuery实现的幻灯图片切换
2016/12/02 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
bootstrap switch开关组件使用方法详解
2017/08/22 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
举例详解Python中yield生成器的用法
2015/08/05 Python
win10下tensorflow和matplotlib安装教程
2018/09/19 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
C#面试题
2016/05/06 面试题
二年级体育教学反思
2014/01/15 职场文书
培训自我鉴定
2014/01/31 职场文书
药剂专业自荐书
2014/06/20 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
晚会开场白和结束语
2015/05/29 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书