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 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
常见的在Python中实现单例模式的三种方法
Apr 08 Python
在Heroku云平台上部署Python的Django框架的教程
Apr 20 Python
详解使用Python处理文件目录的相关方法
Oct 16 Python
Python使用BeautifulSoup库解析HTML基本使用教程
Mar 31 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
python3.7.0的安装步骤
Aug 27 Python
Python中创建二维数组
Oct 17 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
Django REST framework 分页的实现代码
Jun 19 Python
python不同版本的_new_不同点总结
Dec 09 Python
如何正确理解python装饰器
Jun 15 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
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
JS实现滑动拼图验证功能完整示例
2020/03/29 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
Python的Django框架中的Context使用
2015/07/15 Python
python使用fork实现守护进程的方法
2017/11/16 Python
Python实现打印螺旋矩阵功能的方法
2017/11/21 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
如何让python的运行速度得到提升
2020/07/08 Python
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
酒店应聘自荐信
2013/11/09 职场文书
毕业生求职的求职信
2013/12/05 职场文书
年终考核评语
2014/01/19 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
Python实现随机生成迷宫并自动寻路
2021/06/13 Python