数字图像处理(实践篇)一 将图像中的指定目标用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

四 效果图

 

前文回顾

 入门篇目录

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关文章

MySQL组合索引,最左匹配原则失效

说明:在SQL优化时,建立组合索引,我们需要知道最左匹配失效的情况,本文通过实例介绍最左匹配原则失效; 建立组合索引 如下,是一张大表,有1000万条数据; 对表中password、sex和email…

FFmpeg架构全面分析

一、简介 它的官网为:https://ffmpeg.org/,由Fabrice Bellard(法国著名程序员Born in 1972)于2000年发起创建的开源项目。该人是个牛人,在很多领域都有很大的贡献。 FFmpeg是多媒体领域的万能工具。只要涉及音视频领…

virtualbox安装时报错:无法访问你试图使用的功能所在的网络位位置。旧版本的msi文件误删问题解决。

错误如下图所示: 无法访问你试图使用的功能所在的网络位位置。单击“确定”重试,或在下面的框中输入包含安装程序包“xxxxxxxxxxxxx.msi”的文件夹路径。 今天在帮同学安装时发生这个问题,然后各种网站搜索教程,最后也是花了将近…

【EI会议征稿通知】第七届结构工程与工业建筑国际学术会议(ICSEIA 2024)

第七届结构工程与工业建筑国际学术会议(ICSEIA 2024) 2024 7th International Conference on Structural Engineering and Industrial Architecture 随着城市化进程的不断深入,建筑领域的需求也在优化、调整。结构工程的发展依旧受到重视&am…

visionOS空间计算实战开发教程Day 10 照片墙

本例选择了《天空之城》的25张照片,组成5x5的照片墙)。首先我们在setupContentEntity方法中构建了一个纹理数组,将这25张照片添加到数组images中。其中封装了setup方法,借助于visionOS对沉浸式空间的支持,我们创建了三…

【玩转 EdgeOne】| 腾讯云下一代边缘加速CDN EdgeOne 是安全加速界的未来吗?

目录 前言边缘加速与安全加固边缘计算与CDN的融合EdgeOne优秀的安全特性EdgeOne卓越的性能表现灵活的配置和管理生态系统的支持与发展技术创新与未来展望EdgeOne试用结束语 前言 在当下互联网的迅猛发展的时刻,云计算和边缘计算技术的快速发展为网络加速领域带来了…

python中的条件用语

文章目录 ifelse语句elif语句条件嵌套range函数while循环for循环辗转相除法break语句continue语句循环中的else语句 if else语句 elif语句 条件嵌套 range函数 注: 1.不包含end的值 while循环 for循环 注: 在Python中,print(i, end)的意思是…

获取焦点后,样式异常的处理方法

问题 在使用monaco-editor 设置代码提示未正常显示,提示框出现,看不到内容,如图 看不到内容,有两种情况: 情况一:没有得到数据,所以没有展示; 情况二:得到了数据&#x…

收藏!7个小众宝藏的开发者学习类网站

1、simplilearn 地址:https://www.simplilearn.com/ simplilearn是全球排名第一的在线学习网站,它的课程由世界知名大学、顶级企业和领先的行业机构通过实时在线课程设计和提供,其中包括顶级行业从业者、广受欢迎的培训师和全球领导者。 2、…

hutool的bug之 DateUtil.endOfDay(DateUtil.date())

hutool 工具类DateUtil 使用时谨慎 DateUtil.endOfDay 得到的时间保存到数据时会增加一秒 首先比较下时间的long值: 这样就很明显的看出来,hutool工具类的date是毫秒位多了.999,保存到mysql 的时候,MySQL数据库对于毫秒大于500的数据进行…

C语言--各种循环详解(超详细)

一.为什么要学习C语言循环呢? 在C语言之中,运用好循环语句就是拥有了一个强大的武器,它可以帮助你完成许多工作. 有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第…

R语言30分钟入门

1. 环境&安装 R是支持win、linux合macos的 完整参考:https://zhuanlan.zhihu.com/p/596324321?utm_id0 主要是安装:1、R环境;2、rstudio开发环境(后面主要是用rstudio,也可以用vscode) 1.1. rstud…