一张图片中有多个一样的目标物体,分别进行识别定位分割(Python实现)

需求:
一张图片中有多个目标物体,将多个目标物体进行识别分割定位

import cv2
import numpy as npdef show_photo(name,picture):cv2.imshow(name,picture)cv2.waitKey(0)cv2.destroyAllWindows()img_path = r"test3.png"
img = cv2.imread(img_path)
show_photo("img",img)height, width = img.shape[:2]  # 得到行和列的长度image = cv2.imread(img_path)
shape = image.shape
image_row = shape[0]
image_col = shape[1]
print(image_row,image_col)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  # 得到灰度图
#show_photo("gray",gray)
ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
show_photo("binary",binary) # 二值化kernel = np.ones((3, 3), np.uint8)
img_dilate = cv2.dilate(binary, kernel, iterations = 5) # 膨胀
show_photo("img_dilate",img_dilate)outImage, contours, hireachy = cv2.findContours(img_dilate, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 找轮廓draw_img = image.copy()
res = cv2.drawContours(draw_img,contours,-1,(0,0,255),2) # 绘制轮廓,一定要copy要不然会覆盖原图
show_photo('res',res)draw_img1 = image.copy()
for cont in contours: # 绘制轮廓到原图上x, y, w, h = cv2.boundingRect(cont)cv2.rectangle(draw_img1, (x, y), (x+w, y+h), (255, 0, 0), 1,8)print((x, y),(x+w, y+h))show_photo('img_part',image[y:y+h,x:x+w]) # 截取每个物体所对应的ROI
show_photo('draw_img1',draw_img1)

运行效果:
原图
在这里插入图片描述
二值图
在这里插入图片描述
膨胀
在这里插入图片描述
canny找轮廓
在这里插入图片描述
挨个分割
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
分割整体
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/15885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于微信小程序低功耗蓝牙ECharts实时刷新

最近搞了这方面的东西,是刚刚开始接触微信小程序,因为是刚刚开始接触蓝牙设备,所以这篇文章适合既不熟悉小程序,又不熟悉蓝牙的新手看。 项目要求是获取到蓝牙传输过来的数据,并显示成图表实时显示; 我看了…

转运机器人负载最高可达 1000kg,重复精度高达±5mm

转运机器人,内部搭载ICD系列核心控制器,拥有不同的移载平台,负载最高可达 1000kg;重复精度高达5mm;支持 Wi-Fi漫游,实现更稳健的网络数据交互;无轨化激光 SLAM 导航,配合 3D 避障相机等多传感器进行安全防护。转运器人…

租赁系统|北京租赁系统|租赁软件开发流程

在数字化时代的浪潮下,小程序成为了各行各业争相探索的新领域。租赁行业亦不例外,租赁小程序的开发不仅提升了用户体验,更为商家带来了更多商业机会。本文将详细解析租赁小程序的开发流程,为有志于进军小程序领域的租赁行业从业者…

Kubeblocks系列2-redis尝试之出师未捷身先死

背景: 上一节,完成了Kubeblocks系列1-安装。现在就想拿一个简单的应用测试一下kubeblocks这个所谓的神器是否好用,是否可以应用与生产! Kubeblocks系列2-redis尝试 参照官方文档:创建并连接到 Redis 集群 确保 Red…

【教程】Linux部署Android安卓模拟器

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 未完成, 先简单记录下指令。 docker-android https://github.com/budtmo/docker-android 检查系统是否支持: sudo apt instal…

【C++】深入解析C++智能指针:从auto_ptr到unique_ptr与shared_ptr

文章目录 前言:1. 智能指针的使用及原理2. C 98 标准库中的 auto_ptr:3. C 11 中的智能指针循环引用:shared_ptr 定制删除器 4. 内存泄漏总结: 前言: 随着C语言的发展,智能指针作为现代C编程中管理动态分配内存的一种…

【面试干货】猴子吃桃问题

【面试干货】猴子吃桃问题 1、实现思想2、代码实现 💖The Begin💖点点关注,收藏不迷路💖 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 二天早上又将剩…

牛客小白月赛94 解题报告 | 珂学家 | 茴字有36种写法

前言 很久没写题解了,有幸参加了94小白月赛内测,反馈是很nice,AK场。 争议的焦点在于哪题最难 D题E题(没有F题)F题(没有E题) 你选哪题呢? 题解 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 小苯的九宫格 思路…

手机相册的照片彻底删除了怎么恢复?删除照片恢复的5种方法

在数字化时代,手机相册里装满了我们的生活点滴和珍贵回忆。然而,一不小心就可能误删那些意义非凡的照片。别担心,今天小编就给大家介绍5种恢复误删照片的方法,让你的回忆不再丢失! 方法一:相册App的“最近删…

Docker Compose使用

Docker-Compose是什么 docker建议我们每一个容器中只运行一个服务,因为doker容器本身占用资源极少,所以最好是将每个服务单独分割开来,但是这样我们又面临了一个问题: 如果我需要同时部署好多个服务,难道要每个服务单独写Docker…

P4097 【模板】李超线段树 / [HEOI2013] Segment 题解

题意 有一个平面直角坐标系,总共 n n n 个操作,每个操作有两种: 给定正整数 x 0 , y 0 , x 1 , y 1 x_0,y_0,x_1,y_1 x0​,y0​,x1​,y1​ 表示一条线段的两个端点。你需要在平面上加入这一条线段,第 i i i 条被插入的线段的标…

Photoshop插件(UXP)编写过程中,如何更新sp-checkbox的选中状态

✨问题说明 sp-checkbox是uxpSpectrum UXP Widgets下的一个小组件&#xff0c;内置样式大概是这样&#xff1a; 那么&#xff0c;如果用js动态的改变选中的状态&#xff0c;应该如何做呢&#xff1f; 如果直接是html来写&#xff1a; <sp-checkbox checked>Checked<…

特斯拉FSD的「端到端」到底能不能成?

引言 近年来&#xff0c;特斯拉的全自动驾驶&#xff08;Full Self-Driving&#xff0c;FSD&#xff09;技术备受关注&#xff0c;尤其是其「端到端」的AI软件框架更是引发了广泛讨论。端到端技术到底是一条正确的路径吗&#xff1f;它能否真正实现完全自动驾驶&#xff1f;本…

Echarts 实现将X轴放在图表顶部并且自动播放展示提示信息内容

文章目录 需求分析效果预览需求 如下图所示,实现柱状图中反转倒着绘制 分析 使用 ECharts 来实现对 Y 轴的倒序排序时,可以通过设置 yAxis 的 inverse 属性为 true 来实现。以下是一个简单的示例,演示了如何使用 ECharts 来创建一个柱状图,并将 Y 轴进行倒序排序:并且…

前缀和算法:提升编程效率的秘密武器(Java版)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…

代码审计--一道简单的文件包含题目的多种利用方式

NO.1 传统方法 首先来看下代码 <?php error_reporting(0); if(isset($_GET["file"])){include($_GET["file"]); }else{highlight_file(__FILE__);phpinfo(); } ?>看完代码后再来学习学习函数吧&#xff0c;毕竟菜啊&#xff01;&#xff01;&…

NASA数据集——阿尔法喷气式大气实验甲醛(HCHO)数据

Alpha Jet Atmospheric eXperiment Formaldehyde Data 简介 阿尔法喷气式大气实验甲醛数据 阿尔法喷气式大气实验&#xff08;AJAX&#xff09;是美国国家航空航天局艾姆斯研究中心与 H211, L.L.C. 公司的合作项目&#xff0c;旨在促进对加利福尼亚、内华达和太平洋沿岸地区的…

【NOIP2014普及组复赛】题4:子矩阵

题3&#xff1a;子矩阵 【题目描述】 给出如下定义&#xff1a; 1.子矩阵&#xff1a;从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵&#xff08;保持行与列的相对顺序&#xff09;被称为原矩阵的一个子矩阵。 例如&#xff0c;下面左图中选取第 2 、 4 2、4 2、…

vue项目中使用json编辑器

实现效果&#xff1a; 借助插件json-editor-vue3实现效果如图一&#xff0c;如果嫌丑可以通过类名改一下样式如图二。 实现过程&#xff1a; 安装插件&#xff1a;npm install json-editor-vue3 文档链接&#xff1a;GitCode - 开发者的代码家园 <script setup name&quo…

AcWing 3466. 清点代码库(STL:map,vector)

3466. 清点代码库 需要求有几种不同数列&#xff0c;每种有多少个&#xff0c;可以想到用map。它的键是一个数列&#xff0c;可以把它放在vector里。也就是map<vector<int>,int> 要满足要求的输出序列&#xff0c;就要想把它放在其他容器&#xff0c;或数组里&…