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

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

相关文章

如何安装和配置代理服务器squid?

安装和配置Squid代理服务器通常需要几个步骤。以下是在Ubuntu上安装和配置Squid的简单步骤: 步骤 1: 安装Squid 打开终端,并使用以下命令安装Squid: sudo apt update sudo apt install squid步骤 2: 配置Squid 默认配置文件位于 /etc/squ…

convertRect:toView 方法注意事项

这是在网上找到的一张图 我们开发中有时候会用到左边转换,convertRect:toView 通常情况下,我们回这样使用 CGRect newRect [a convertRect:originframe toView:c];其中newRect和 originframe的size相同,只改变origin newRect.origin a…

系统优化软件Bitsum Process Lasso Pro v12.4,供大家学习研究参考

1、自动或手动调整进程优先级;将不需要抑制的进程添加到排除列表; 2、设置动态提升前台运行的进程/线程的优先级 3、设置进程黑名单,禁止无用进程(机制为启动即结束,而非拦截其启动)。 4、优化I/O优先级以及电源模式自动化。 5、ProBalance功能。翻译成中文是“进程平衡…

STM32入门--CAN

目录 一、bxCan简介 二、bxCAN总体描述 2.1概述 2.2CAN框图 三、bxCA的工作模式 3.1初始化模式 3.2正常模式 3.3睡眠模式(低功耗) 四、测试模式 4.1静默模式 4.2环回模式 五、bxCAN功能描述 5.1 发送处理 ​编辑 5.2接收管理 5.2.1 标识符过…

HTTP协议抓包工具Charles 抓包图文完整教程

Charles是在您自己的计算机上运行的Web代理(HTTP代理 / HTTP监视器),您的网络浏览器(或任何其他Internet应用程序)配置为通过Charles访问Internet,Charles可以为您记录并显示发送和接收的所有数据。 Http抓…

[tsai.shen@mailfence.com].faust勒索病毒数据怎么处理|数据解密恢复

导言: [support2022cock.li].faust、[tsai.shenmailfence.com].faust、[Encrypteddmailfence.com].faust勒索病毒是一种具有恶意目的的勒索软件,其主要特点包括对受害者文件进行强力加密,然后勒索受害者支付赎金以获取解密密钥。攻击者通常通…

Centos8部署MySQL主从复制报错问题

问题1.在部署MySQL主从复制时,创建用户提示ERROR 1819:Your password does not satisfy the current policy requirements。即为当前配置的密码,不符合策略要求。 问题1解决方式: set global validate_password.policyLOW; \\…

Leetcode—1410.HTML实体解析器【中等】

2023每日刷题(三十八) Leetcode—1410.HTML实体解析器 算法思想 实现代码 typedef struct entityChar {char* entity;char rechar; }entity;entity matches[] {{""", "},{"'", \},{"&"…

NLP中 大语言模型LLM中的思维链 Chain-of-Thought(CoT) GoT

文章目录 介绍思路CoT方法Few-shot CoTCoT Prompt设计CoT投票式CoT-自洽性(Self-consistency)使用复杂的CoT自动构建CoTCoT中示例顺序的影响Zero-shot CoT 零样本思维链 GoT,Graph of Thoughts总结 介绍 在过去几年的探索中,业界发现了一个现…

C语言之strstr函数的使用和模拟实现

C语言之strstr函数的模拟实现 文章目录 C语言之strstr函数的模拟实现1. strstr函数的介绍2. strstr函数的使用3. strstr的模拟实现3.1 实现思路3.2 实现代码 1. strstr函数的介绍 函数声明如下: char * strstr ( const char * str1, const char * str2 ); strs…

怎样自动把网页截图发到微信群里

现在很多公司都在使用企业微信了,不但方便公司内部交流和客户交流,还能组建各种小组群,业务群。企业微信群提供一个机器人的功能,方便我们把公司业务信息,或来自外部的信息自动发布到群里。 这里研究一下如何向微信群…

大数据-之LibrA数据库系统告警处理(ALM-37003 GTM主备不同步或者GTM主备断连)

告警解释 当GTM主实例与GTM备实例连接异常或者GTM主实例未处于同步状态时,产生该告警。 告警属性 告警ID 告警级别 可自动清除 37003 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产…

基于OpenCV+MediaPipe的手势识别

【精选】【优秀课设】基于OpenCVMediaPipe的手势识别(数字、石头剪刀布等手势识别)_石头剪刀布opencv识别代码_网易独家音乐人Mike Zhou的博客-CSDN博客 import cv2 import mediapipe as mp import mathdef vector_2d_angle(v1, v2):求解二维向量的角度v…

HIVE SQL 判断空值函数

目录 nvl()coalesce() nvl() select nvl(null,2);输出:2 select nvl(,2);输出:‘’ coalesce() select coalesce(null,2);输出:2 select coalesce(,2);输出:‘’ select coalesce(null,null,2);输出:2 *coalesc…

Maxwell安装部署消费到kafka集群

1.上传安装包到linux系统上面 2.解压安装包到安装目录下,并且重命名 [rootVM-4-10-centos package]# tar -zxvf maxwell-1.29.2.tar.gz -C /opt/software/3.配置mysql 增加以下配置 #数据库id server-id 1 #启动binlog,该参数的值会作为binlog的文件…

分布式锁详解

文章目录 分布式锁1. [传统锁回顾](https://blog.csdn.net/qq_45525848/article/details/134608044?csdn_share_tail%7B%22type%22:%22blog%22,%22rType%22:%22article%22,%22rId%22:%22134608044%22,%22source%22:%22qq_45525848%22%7D)1.1. 从减库存聊起1.2. 环境准备1.3. 简…

leetcode每日一题32

82.删除排序链表中的重复元素 主要问题是没有头节点,以及要删除所有的相等元素,不是留下一个 那么首先要建立一个头节点,指向head 而且指针要始终指向要删除的节点的前一个节点 ListNode* pre new ListNode(0,head);在搜索的过程中&#x…

Handler系列-Message是怎么重复利用的

1.Message类的支持 使用链表来缓存Message,sPool为表头;最多能缓存50个Message;sPoolSync用来保证读写链表的安全; public final class Message implements Parcelable {private static Message sPool; //缓存的列表表头/*packa…

98、Text2Room: Extracting Textured 3D Meshes from 2D Text-to-Image Models

简介 github 利用预训练的2D文本到图像模型来合成来自不同姿势的一系列图像。为了将这些输出提升为一致的3D场景表示,将单目深度估计与文本条件下的绘画模型结合起来,提出了一个连续的对齐策略,迭代地融合场景帧与现有的几何形状&#xff0…

#Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()

单线程模式 之所以采用单线程,而不是多线程,跟历史有关系。原因是不想让浏览器变得太复杂,因为多线程需要共享资源、且有可能修改彼此的运行结果,对于一种网页脚本语言来说,太复杂了。 好处 实现起来比较简单&#…