Python Opencv任意形状目标检测并绘制框图
作者:xiaoxifei 发布时间:2023-06-06 19:03:43
标签: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)
结果图如下:
来源:https://blog.csdn.net/xiaoxifei/article/details/85064217


猜你喜欢
- 最近做了一个微信小程序的项目,关于后端给我传递日期的时候,我拿到的是一串数字如:createDate: 1552117531000 ,这是一
- 首先说一下我遇到的坑,生产上遇到的问题,我调度Python脚本执行并监控这个进程,python脚本运行时间远远大于python脚本中自己统计
- 本文实例讲述了JavaScript实现模仿桌面窗口的方法。分享给大家供大家参考。具体如下:这里使用JS模仿了桌面窗口的移动、八个方向的缩放、
- 步骤如下: 1.使用torchvision加载并预处理CIFAR-10数据集、2.定义网络3.定义损失函数和优化器4.训练网络并更新网络参数
- 本文实例讲述了Python计算程序运行时间的方法。分享给大家供大家参考。具体实现方法如下:import timedef start_slee
- channelGo语言中的通道(channel)是一种特殊的类型。在任何时候,同时只能有一个 goroutine 访问通道进行发送和获取数据
- 本文实例讲述了Python的函数返回值用法。分享给大家供大家参考。具体分析如下:最近学一些Python的基本用法,看到定义函数,发现似乎只能
- 修改MySQL下的默认mysql数据库的user表,删除所有host为localhost记录,另外添加一些其他记录,重新启动MySQL服务器
- 本文实例讲述了Python面向对象程序设计之类和对象、实例变量、类变量用法。分享给大家供大家参考,具体如下:类和对象:类的定义:用来描述具有
- train_comb 为Dataframe数据:train_comb= train_comb.as_matrix() #得到values的n
- 如下所示:python3:img_path = ' 'im = cv2.imdecode(np.fromfile
- 下面就是简单的例子,这里提供2中方法:test.htm &
- java的简单介绍Java是一种通用的面向对象编程语言,旨在生成可在任何地方使用相同代码的代码。这种编程语言是基于类的,面向对象的和人类可读
- 假设现在有如下N条记录 表明叫book id author title 1 aaa AAA 2 bbb BBB 3 ccc CCC 4 dd
- 最简单的模式,C/S模式实现聊天室从半双工开始,何谓半双工?半双工即是说双方可以互发消息,但一次只能一个用户发送。 只要稍微会点s
- import random, stringclass C(object): passdef danger
- 看代码,tensor转numpy:a = torch.ones(2,2)b = a.numpy()c=np.array(a) #也可以转nu
- 9月23,Django 发布了2.0a1版本,这是一个 feature freeze 版本,如果没有什么意外的话,2.0正式版不会再增加新的
- 最近对动易CMS有个研究任务,具体研究什么,嘿嘿,保密。网络收集了九个常见的错误原因分析及解决方法错误提示: ADODB.Recordset
- 在数据库查询的时候,我们有时有这样的需求,就是要找出数据表里指定范围行内的数据记录,比如说要找出数据表里第10行到第20行的这10条数据,那