Python Opencv任意形状目标检测并绘制框图
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)
结果图如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
10 行Python 代码实现 AI 目标检测技术【推荐】
只需10行Python代码,我们就能实现计算机视觉中目标检测. from imageai.Detection import ObjectDetection import os execution_path = os.getcwd() detector = ObjectDetection() detector.setModelTypeAsRetinaNet() detector.setModelPath( os.path.join(execution_path , "resnet50_coco_b
-
python开启摄像头以及深度学习实现目标检测方法
最近想做实时目标检测,需要用到python开启摄像头,我手上只有两个uvc免驱的摄像头,性能一般.利用python开启摄像头费了一番功夫,主要原因是我的摄像头都不能用cv2的VideCapture打开,这让我联想到原来opencv也打不开Android手机上的摄像头(后来采用QML的Camera模块实现的).看来opencv对于摄像头的兼容性仍然不是很完善. 我尝了几种办法:v4l2,v4l2_capture以及simpleCV,都打不开.最后采用pygame实现了摄像头的采集功能,这里直接给大
-
Python+OpenCV目标跟踪实现基本的运动检测
目标跟踪是对摄像头视频中的移动目标进行定位的过程,有着非常广泛的应用.实时目标跟踪是许多计算机视觉应用的重要任务,如监控.基于感知的用户界面.增强现实.基于对象的视频压缩以及辅助驾驶等. 有很多实现视频目标跟踪的方法,当跟踪所有移动目标时,帧之间的差异会变的有用:当跟踪视频中移动的手时,基于皮肤颜色的均值漂移方法是最好的解决方案:当知道跟踪对象的一方面时,模板匹配是不错的技术. 本文代码是做一个基本的运动检测 考虑的是"背景帧"与其它帧之间的差异 这种方法检测结果还是挺不错的,但是需要
-
python opencv检测目标颜色的实例讲解
实例如下所示: # -*- coding:utf-8 -*- __author__ = 'kingking' __version__ = '1.0' __date__ = '14/07/2017' import cv2 import numpy as np import time if __name__ == '__main__': Img = cv2.imread('example.png')#读入一幅图像 kernel_2 = np.ones((2,2),np.uint8)#2x2的卷积核
-
python+opencv+caffe+摄像头做目标检测的实例代码
首先之前已经成功的使用Python做图像的目标检测,这回因为项目最终是需要用摄像头的, 所以实现摄像头获取图像,并且用Python调用CAFFE接口来实现目标识别 首先是摄像头请选择支持Linux万能驱动兼容V4L2的摄像头, 因为之前用学ARM的时候使用的Smart210,我已经确认我的摄像头是支持的, 我把摄像头插上之後自然就在 /dev 目录下看到多了一个video0的文件, 这个就是摄像头的设备文件了,所以我就没有额外处理驱动的部分 一.检测环境 再来在开始前因为之前按着国嵌的指导手册安
-
Python Opencv任意形状目标检测并绘制框图
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 d
-
Python Opencv实现单目标检测的示例代码
一 简介 目标检测即为在图像中找到自己感兴趣的部分,将其分割出来进行下一步操作,可避免背景的干扰.以下介绍几种基于opencv的单目标检测算法,算法总体思想先尽量将目标区域的像素值全置为1,背景区域全置为0,然后通过其它方法找到目标的外接矩形并分割,在此选择一张前景和背景相差较大的图片作为示例. 环境:python3.7 opencv4.4.0 二 背景前景分离 1 灰度+二值+形态学 轮廓特征和联通组件 根据图像前景和背景的差异进行二值化,例如有明显颜色差异的转换到HSV色彩空间进行分割. 1
-
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
一.利用直方图的方式进行批量的图片缺陷检测(方法简单) 二.步骤(完整代码见最后) 2.1灰度转换(将原图和要检测对比的图分开灰度化) 灰度化的作用是因为后面的直方图比较需要以像素256为基准进行相关性比较 img = cv2.imread("0.bmp") #原图灰度转换 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) #循环要检测的图,均灰度化 for i in range(1, 6): t1=cv2.cvtColor(cv2.imread
-
python 生成任意形状的凸包图代码
一.效果图: 在左图的白色区域周围,画任意形状的凸包图. 二.代码 import cv2 import numpy as np def generate_poly(image, n, area_thresh): """ 随机生成凸包 :param image: 二值图 :param n: 顶点个数 :param area_thresh: 删除小于此面积阈值的凸包 :return: 凸包图 """ row, col = np.where(image
-
树莓派上利用python+opencv+dlib实现嘴唇检测的实现
目录 1.安装相关库文件 2.代码部分 3.实验效果 树莓派上利用python+opencv+dlib实现嘴唇检测 项目的目标是在树莓派上运行python代码以实现嘴唇检测,本来以为树莓派的硬件是可以流畅运行实时检测的,但是实验的效果表明树莓派实时检测是不可行,后面还需要改进. 实验的效果如下: 1.安装相关库文件 这里需要用的库有opencv,numpy,dlib. 1.1 安装opencv pip3 install opencv-python 1.2 安装numpy 树莓派中自带了numpy
-
Python Flask搭建yolov3目标检测系统详解流程
[人工智能项目]Python Flask搭建yolov3目标检测系统 后端代码 from flask import Flask, request, jsonify from PIL import Image import numpy as np import base64 import io import os from backend.tf_inference import load_model, inference os.environ['CUDA_VISIBLE_DEVICES'] = '
-
Python OpenCV中的drawMatches()关键匹配绘制方法
目录 作用说明 函数原型 参数详解 结果 作用说明 该方法被用于绘制关键点的匹配情况.我们看到的许多匹配结果都是使用这一方法绘制的——一左一右两张图像,匹配的关键点之间用线条链接. 函数原型 cv.drawMatches( img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg cv.drawMatche
-
Python Opencv实战之文字检测OCR
目录 1.相关函数的讲解 2.代码展示 Detecting Words Detecting ONLY Digits 3.问题叙述 4.image_to_data()配置讲解 5.项目拓展 6.总结与评价 1.相关函数的讲解 image_to_data()的输出结果是表格形式,输出变量的类型依旧是字符串. 你会得到一个这样的列表['level', 'page_num', 'block_num', 'par_num', 'line_num', 'word_num', 'left', 'top', '
-
python+opencv实现车道线检测
python+opencv车道线检测(简易实现),供大家参考,具体内容如下 技术栈:python+opencv 实现思路: 1.canny边缘检测获取图中的边缘信息: 2.霍夫变换寻找图中直线: 3.绘制梯形感兴趣区域获得车前范围: 4.得到并绘制车道线: 效果展示: 代码实现: import cv2 import numpy as np def canny(): gray = cv2.cvtColor(lane_image, cv2.COLOR_RGB2GRAY) #高斯滤波 blur = c
随机推荐
- 当菜鸟遇上黒客(5):黒客入侵窗口:IIS
- Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
- Sea.JS知识总结
- Java调用MySQL存储过程并获得返回值的方法
- Struts2中异常处理机制分析
- Oracle 分区索引介绍和实例演示
- Python代码的打包与发布详解
- ADO.NET实现对SQL Server数据库的增删改查示例
- js判断IE浏览器版本过低示例代码
- 使用root权限运行自己所编译程序的解决方法
- js实现产品缩略图效果
- PHP实现更新中间关联表数据的两种方法
- js简单实现标签云效果实例
- 数据库访问性能优化
- IIS下自定义404页面返回200状态码的严重性及解决方法
- SQL Server 交叉表查询 case
- 原生的html元素选择器类似jquery选择器
- jQuery新闻滚动插件 jquery.roller.js
- javascript从定义到执行 你不知道的那些事
- 快速使用Bootstrap搭建传送带