数字图像处理(实践篇)一 将图像中的指定目标用bBox框起来吧!

目录

一 实现方法

二 涉及的OpenCV函数

三 代码

四 效果图


一 实现方法

①利用OTSU方法将前景与背景分割。

②使用连通区域分析可以将具有相同像素值且位置相邻的前景像素点组成的图像区域识别。

③画bbox。

④显示结果。

二 涉及的OpenCV函数

① OpenCV提供了cv2.threshold()用于实现阈值处理。

ret, dst = cv2.threshold(src, thresh, maxval, type)

ret:代表返回的阈值。

src:原图。

dst: 输出图。

thresh:要设定的阈值。

maxval: 当像素值超过了阈值或者小于阈值所赋予的值。

type:二值化操作的类型,包含5种类型。

OpenCV提供了cv2.connectedComponentsWithStats()函数用于处理不规则连通区域。

retval, labels, stats, centroids = cv2.connectedComponentsWithStats(image, connectivity=8)

image : 是要处理的图片,8位单通道的图像。

connectivity : 可以选择是4连通还是8连通。

retval : 返回值是连通区域的数量。

labels :一个输入图像大小的矩阵,其中每个元素的值等于其标签。

stats :包含5个参数分别为x,y,h,w,s。分别对应每一个连通区域的外接矩形的起始坐标x,y;外接矩形的wide,height;s是labels对应的连通区域的像素个数。

centroids : 返回的是连通区域的质心。

三 代码

import cv2
import matplotlib.pyplot as plt
def dealImg(img):
    b, g, r = cv2.split(img)
    img_rgb = cv2.merge([r, g, b])
    return img_rgb
def dealImageResult(img_path):
    img = cv2.imread(img_path)
    img_box = img.copy()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # OTSU方法实现前景与背景分割
    ret2, dst_OTSU = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
    # 识别出目标区域并用bbox框起来
    # 连通区域分析可以将具有相同像素值且位置相邻的前景像素点组成的图像区域识别
    ret, labels, stats, centroid = cv2.connectedComponentsWithStats(dst_OTSU)
    Iarea = sorted(stats, key=lambda s: s[-1], reverse=False)[-2]
    cv2.rectangle(
        img_box,
        (Iarea[0], Iarea[1]),
        (Iarea[0] + Iarea[2], Iarea[1] + Iarea[3]),
        (255, 0, 0),
        3
    )
    fig = plt.figure(figsize=(8, 8))
    titles = ["img", "gray", "OTSU", "img_box"]
    img = dealImg(img)
    img_box = dealImg(img_box)
    images = [img, gray, dst_OTSU, img_box]
    for i in range(4):
        plt.subplot(2, 2, i + 1), plt.imshow(images[i], 'gray')
        plt.title(titles[i])
        plt.xticks([]), plt.yticks([])
    plt.show()
    fig.savefig('test_results.jpg', bbox_inches='tight')
if __name__ == '__main__':
    dealImageResult("3.jpg")
    pass

四 效果图

 

前文回顾

 入门篇目录

 数字图像处理(入门篇)一 图像的数字化与表示

 数字图像处理(入门篇)二 颜色空间

 数字图像处理(入门篇)三 灰度化

 数字图像处理(入门篇)四 像素关系

 数字图像处理(入门篇)五 图像数据预处理之颜色空间转换

 数字图像处理(入门篇)六 图像数据预处理之坐标变化

 数字图像处理(入门篇)七 图像数据预处理之灰度变化

 数字图像处理(入门篇)八 图像数据预处理之直方图

 数字图像处理(入门篇)九 图像数据预处理之滤波

 数字图像处理(入门篇)十 边缘检测

 数字图像处理(入门篇)十一 形态学处理

 数字图像处理(入门篇)十二 自适应阈值分割

 数字图像处理(入门篇)十三 仿射变换

 数字图像处理(入门篇)十四 透视变换

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android 打包aar包含第三方aar 解决方案

Android 打包aar包含第三方aar 因项目需要,打包aar包含第三方aar,如果直接对module进行打包会产生一些问题。 * What went wrong: Direct local .aar file dependencies are not supported when building an AAR. The resulting AAR would be broken be…

金风玉露一相逢|实在智能联手浪潮信息合力致新生成式AI产业生态

近日,实在智能正式加入浪潮信息元脑生态AIStore。 实在智能是一家基于AGI大模型超自动化技术,领跑人机协同时代的人工智能科技公司,以其自研垂直的“TARS(塔斯)大语言模型”技术、实在RPA Agent智能体数字员工产品和超…

土壤教学经典用图30张

一、土壤分布 二、土壤形成与气候 三、土壤形成与地形 四、土壤形成与成土母质 五、成土过程示意图 六、土壤剖面实景图 七、土壤剖面示意图 八、土壤质地 以上图片多来源于 人教、湘教、鲁教、中图、沪教 五套新教材及地图册

unity Terrain 性能问题

在实践过程中unity发生进入场景GPU爆显存的情况,经过调查发现是使用Terrain造成的问题,这个问题在使用一个Terrain的时候并不会发生,但是在使用多个时会发生。 似乎在使用过程中Terrain会直接把Terrain的整个地图加载,造成移动设…

Duplicate 模型中的 ROLLUP(十六)

因为 Duplicate 模型没有聚合的语意。所以该模型中的 ROLLUP,已经失去了“上卷”这一层含义。而仅仅是作为调整列顺序,以命中前缀索引的作用。下面详细介绍前缀索引,以及如何使用 ROLLUP 改变前缀索引,以获得更好的查询效率。 前…

【广州华锐互动】Web3D云展编辑器能为展览行业带来哪些便利?

在数字时代中,传统的展览方式正在被全新的技术和工具所颠覆。其中,最具有革新意义的就是Web3D云展编辑器。这种编辑器以其强大的功能和灵活的应用,正在为展览设计带来革命性的变化。 广州华锐互动开发的Web3D云展编辑器是一种专门用于创建、编…

微服务学习|初识MQ、RabbitMQ快速入门、SpringAMQP

初识MQ 同步通讯和异步通讯 同步通讯是实时性质的,就好像你用手机与朋友打视频电话,但是,别人再想与你视频就不行了,异步通讯不要求实时性,就好像你用手机发短信,好多人都能同时给你发短信,你…

java springboot测试类虚拟MVC环境 匹配返回值与预期内容是否相同 (JSON数据格式) 版

上文java springboot测试类鉴定虚拟MVC请求 返回内容与预期值是否相同我们讲了测试类中 虚拟MVC发送请求 匹配返回内容是否与预期值相同 但是 让我意外的是 既然没人骂我 因为我们实际开发 返回的基本都是json数据 字符串的接口场景是少数的 我们在java文件目录下创建一个 dom…

U9二次开发之轻量服务项目开发

最近公司要开发一个下载图纸的U9轻量级接口,轻量级接口就是restful api,可以直接通过get、post等方式调用,参数的传送和结果的返回都使用JSON格式,用起来比Webservice接口爽多了。 如果是开发新的接口,我建议都用轻量…

CentOS7磁盘挂载

1 引言 本文主要讲述CentOS7磁盘挂载相关知识点和操作。 2 磁盘挂载 步骤1: 查看机器所挂硬盘及分区情况 fdisk -l查询结果: 由上图可以看到该结果包含:硬盘名称、硬盘大小等信息。 属性解释说明Disk /dev/vda硬盘名称53.7G磁盘大…

vue3中引入svg矢量图

vue3中引入svg矢量图 1、前言2、安装SVG依赖插件3、在vite.config.ts 中配置插件4、main.ts入口文件导入5、使用svg5.1 在src/assets/icons文件夹下引入svg矢量图5.2 在src/components目录下创建一个SvgIcon组件5.3 封装成全局组件,在src文件夹下创建plugin/index.t…

一穿一戴一世界 | 紫光展锐2023智能穿戴沙龙成功举办

11月23日,紫光展锐在深圳成功举办了以“一穿一戴一世界”为主题的2023智能穿戴沙龙。展锐智能穿戴沙龙已举办四届,旨在为行业提供启发性的观点和前瞻性的创新理念。本届沙龙吸引了终端厂商、行业翘楚、生态伙伴等行业各领域超过500人汇聚一堂&#xff0c…

代码随想录算法训练营第四十五天【动态规划part07】 | 70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

70. 爬楼梯 (进阶) 题目链接: 题目页面 求解思路: 动规五部曲 确定dp数组及其下标含义:爬到有i阶楼梯的楼顶,有dp[i]种方法递推公式:dp[i] dp[i-j];dp数组的初始化:dp[0] 1;确…

echarts笛卡尔坐标系热力图当坐标及数据为小数时

// X坐标轴 const xValue [6,6.5,7,7.5,8,8.5,9,9.5,10]; //Y坐标轴 const yValue [1.5,2,2.5,3,3.5,4,4.5,5,5.5,6]; // 需要展示的值【X坐标,Y坐标,展示的数值】 const data [[6.5,2,4], [7, 2.5, 10]] ; // 坐标轴及数值存在小数时,需要进行转化,否…

图扑数字孪生在智慧校园可视化中的应用

当今,智慧校园发展阶段亟需推动信息可视化建设与发展,将大数据、云计算、可视化等高新技术相融合,为校园师生创造科学智能的学习环境,并实现教学资源最大化和信息服务智能化。帮助学校更好地应用校园可视化技术,提升校…

【医学图像处理】超详细!PET图像批量预处理

目录 一、单个PET图像预处理1、使用[MRIConvert](https://pan.baidu.com/s/1cn3kgeVRir8HvP6HHm0M0Q?pwd5rt5)处理DCM2、MRI和PET数据预处理过程1) 打开matlab命令行输入spm pet,打开SMP12,界面如下2) Realign,只需要…

小程序:用户查找英语单词的意思 ← Python字典

【程序分析】 ● 字典中的条目是没有顺序的。 ● 可以对字典使用如下方法: keys()、values()、 items()、 clear()、 get(key)、 pop(key) 和popitem()【程序代码】 dictionary{"dog":"狗","apple":"苹果","banana&q…

软件测试该如何发展?自我价值诉求?“我“的测试之路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 其实测试的生态&a…

curl添加https服务

CURL支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。 首选删除系统自带的openssl,因为他只有可执行程序和库,没有头文件。 sudo apt-get remove openssl openssl官网&am…

国产自研数字孪生引擎如何突围?易知微给出了一个答案!

大数据产业创新服务媒体 ——聚焦数据 改变商业 在数字化转型的大潮中,数字孪生引擎以其独特的能力,正迅速成为能源、智慧城市、智能制造及智能政务等多个领域的关键技术。通过创建现实世界的虚拟副本,数字孪生为复杂系统的管理、优化和预测…