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爬虫之爬虫的定义及URL构成
Nov 04 Python
python中函数传参详解
Jul 03 Python
Python编写简单的HTML页面合并脚本
Jul 11 Python
详解Python中的分组函数groupby和itertools)
Jul 11 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
在python3中实现更新界面
Feb 21 Python
Python sorted排序方法如何实现
Mar 31 Python
Python selenium使用autoIT上传附件过程详解
May 26 Python
五分钟学会怎么用python做一个简单的贪吃蛇
Jan 12 Python
python中%格式表达式实例用法
Jun 18 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 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备份/还原MySQL数据库的代码
2011/01/06 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
Using the TextRange Object
2006/10/14 Javascript
精通Javascript系列之Javascript基础篇
2011/06/07 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
2014/01/16 Javascript
js实现星星打分效果的方法
2020/07/05 Javascript
js滑动提示效果代码分享
2016/03/10 Javascript
简单的js表格操作
2016/09/24 Javascript
原生js实现放大镜
2017/02/20 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
30分钟快速实现小程序语音识别功能
2018/11/27 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
Python可跨平台实现获取按键的方法
2015/03/05 Python
python查询sqlite数据表的方法
2015/05/08 Python
Python将多个excel表格合并为一个表格
2021/02/22 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
基于python的socket实现单机五子棋到双人对战
2020/03/24 Python
django实现支付宝支付实例讲解
2019/10/17 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
怎样写好自我鉴定
2013/12/04 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
节约用电倡议书
2015/04/28 职场文书
2015教师节通讯稿
2015/07/20 职场文书
python自动统计zabbix系统监控覆盖率的示例代码
2021/04/03 Python
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python
Java数组详细介绍及相关工具类
2022/04/14 Java/Android
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle