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中的占位符
Nov 09 Python
Python排序搜索基本算法之堆排序实例详解
Dec 08 Python
浅析Python数据处理
May 02 Python
Sanic框架配置操作分析
Jul 17 Python
python和opencv实现抠图
Jul 18 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
将pytorch转成longtensor的简单方法
Feb 18 Python
Python flask路由间传递变量实例详解
Jun 03 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
Nov 27 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
如何使用flask将模型部署为服务
May 13 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
Node.js中的缓冲与流模块详细介绍
2015/02/11 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
2017/01/05 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
如何自定义微信小程序tabbar上边框的颜色
2019/07/09 Javascript
vue给对象动态添加属性和值的实例
2019/09/09 Javascript
python发布模块的步骤分享
2014/02/21 Python
Python通过poll实现异步IO的方法
2015/06/04 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
python executemany的使用及注意事项
2017/03/13 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
win10安装python3.6的常见问题
2020/07/01 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
海外淘书首选:AbeBooks
2017/07/31 全球购物
伦敦一卡通:The London Pass
2018/11/30 全球购物
大学生军训自我鉴定
2014/02/12 职场文书
领导党性分析材料
2014/02/15 职场文书
廉洁自律演讲稿
2014/05/22 职场文书
课外活动实习计划
2015/01/19 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技