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实现DNS正向查询、反向查询的例子
Apr 25 Python
Python去除列表中重复元素的方法
Mar 20 Python
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
Apr 05 Python
Python创建模块及模块导入的方法
May 27 Python
Python正则表达式教程之一:基础篇
Mar 02 Python
Python 类的魔法属性用法实例分析
Nov 21 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
使用tensorflow DataSet实现高效加载变长文本输入
Jan 20 Python
python实现QQ邮箱发送邮件
Mar 06 Python
Python基于内置函数type创建新类型
Oct 22 Python
Python爬虫回测股票的实例讲解
Jan 22 Python
Python如何实现Paramiko的二次封装
Jan 30 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
星际争霸 Starcraft 秘技补丁
2020/03/14 星际争霸
php中的实现trim函数代码
2007/03/19 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
JavaScript库 开发规则
2009/01/31 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
2015/08/24 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
微信小程序 行的删除和增加操作实现详解
2019/09/29 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
python绘制简单折线图代码示例
2017/12/19 Python
Python实现的读写json文件功能示例
2018/06/05 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
Python基础教程之异常详解
2019/01/10 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
基于python实现坦克大战游戏
2020/10/27 Python
怎样声明接口
2014/09/19 面试题
房屋租赁意向书
2014/04/01 职场文书
学校就业推荐信范文
2014/05/19 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
《小小的船》教学反思
2016/02/18 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
Python中的min及返回最小值索引的操作
2021/05/10 Python