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中的迭代器漫谈
Feb 03 Python
python根据给定文件返回文件名和扩展名的方法
Mar 27 Python
Python处理字符串之isspace()方法的使用
May 19 Python
Python获取系统默认字符编码的方法
Jun 04 Python
python web框架学习笔记
May 03 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
Mar 31 Python
Python 脚本获取ES 存储容量的实例
Dec 27 Python
Python Web框架之Django框架Form组件用法详解
Aug 16 Python
Python线程障碍对象Barrier原理详解
Dec 02 Python
简单了解django文件下载方式
Feb 10 Python
Python集合的基础操作
Nov 01 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
将数组写入txt文件 var_export
2009/04/21 PHP
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
浅谈Laravel中的一个后期静态绑定
2017/08/11 PHP
javascript数组的扩展实现代码集合
2008/06/01 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
用Python实现一个简单的线程池
2015/04/07 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
python嵌套字典比较值与取值的实现示例
2017/11/03 Python
Python实现全排列的打印
2018/08/18 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
python 中如何获取列表的索引
2019/07/02 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
Python turtle绘画象棋棋盘
2019/08/21 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
TensorFlow中如何确定张量的形状实例
2020/06/23 Python
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
战友聚会邀请函
2014/01/18 职场文书
村党支部群众路线教育实践活动对照检查材料
2014/09/26 职场文书
记者节感言
2015/08/03 职场文书
校运会广播稿
2015/08/19 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
创业计划书之宠物店
2019/09/19 职场文书
nginx反向代理时如何保持长连接
2021/03/31 Servers
Linux系统下安装PHP7.3版本
2021/06/26 PHP