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 list 合并连接字符串的方法
Mar 09 Python
Python读取键盘输入的2种方法
Jun 16 Python
python实现基本进制转换的方法
Jul 11 Python
Python装饰器基础详解
Mar 09 Python
对pandas中两种数据类型Series和DataFrame的区别详解
Nov 12 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
使用pickle存储数据dump 和 load实例讲解
Dec 30 Python
python Tensor和Array对比分析
Jan 08 Python
python-xpath获取html文档的部分内容
Mar 06 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
Apr 26 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
May 11 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学习之PHP表达式
2006/10/09 PHP
PHP源码之explode使用说明
2011/08/05 PHP
php _autoload自动加载类与机制分析
2012/02/10 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
JavaScript delete 属性的使用
2009/10/08 Javascript
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
javascript动态加载三
2012/08/22 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
2015/08/28 Javascript
Javascript验证方法大全
2015/09/21 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
vue实现移动端轻量日期组件不依赖第三方库的方法
2019/04/28 Javascript
vue中实现动态生成二维码的方法
2020/02/21 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
python if not in 多条件判断代码
2016/09/21 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
python-str,list,set间的转换实例
2018/06/27 Python
python for和else语句趣谈
2019/07/02 Python
最热门的自我评价
2013/12/30 职场文书
军训自我鉴定
2014/01/22 职场文书
岗位职责的构建方法
2014/02/01 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
2014年班主任德育工作总结
2014/12/05 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
硕士论文致谢范文
2015/05/14 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers