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使用点操作符访问字典(dict)数据的方法
Mar 16 Python
python正则表达式re之compile函数解析
Oct 25 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
Jan 10 Python
django 信号调度机制详解
Jul 19 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
matplotlib实现显示伪彩色图像及色度条
Dec 07 Python
pytorch-RNN进行回归曲线预测方式
Jan 14 Python
Window系统下Python如何安装OpenCV库
Mar 05 Python
python 如何实现遗传算法
Sep 22 Python
python学习之panda数据分析核心支持库
May 07 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 YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
php版微信支付api.mch.weixin.qq.com域名解析慢原因与解决方法
2016/10/12 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
2019/04/12 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
深入浅析python继承问题
2016/05/29 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
python八皇后问题的解决方法
2018/09/27 Python
python 杀死自身进程的实现方法
2019/07/01 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
Hotels.com印度:酒店预订
2019/05/11 全球购物
市场营销专科应届生求职信
2013/11/24 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
本溪关门山导游词
2015/02/09 职场文书
城南旧事电影观后感
2015/06/16 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
2016应届毕业生实习心得体会
2015/10/09 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
Win11显卡控制面板打开显卡设置方法
2022/04/20 数码科技
V Rising 服务器搭建图文教程
2022/06/16 Servers