当前位置: 首页 > news >正文

opencv识别一张图片的多个红框,并截取红框的内容

需求

 需要获取图片的红框的内容,实体的图片我就不放了

获取红框

先截取获得图片的多个轮廓

import cv2  
import numpy as np  # 加载图像并转换为灰度图像  
image = cv2.imread('image6.jpg')  
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  # 应用高斯模糊以减少噪声  
blur = cv2.GaussianBlur(gray, (5, 5), 0)  # 应用HSV颜色空间转换  
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)  
lower_red = np.array([0, 50, 50])  
upper_red = np.array([10, 255, 255])  
mask = cv2.inRange(hsv, lower_red, upper_red)  # 应用膨胀操作来放大边框内的内容和边框  
kernel = np.ones((5,5),np.uint8)  
dilated = cv2.dilate(mask,kernel,iterations = 1)  # 获取边界框坐标  
contours, hierarchy = cv2.findContours(dilated, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)  # 遍历每个轮廓并找到最大的红色边框  
max_contour = None  
max_area = 0  
for contour in contours:  area = cv2.contourArea(contour)  # if area > max_area:  #     max_contour = contour  #     max_area = area  x, y, w, h = cv2.boundingRect(contour)  # 裁剪图像以显示边界框内的内容及其周围10px内容  crop_image = image[max(y-10, 0):min(y+h+10, image.shape[0]), max(x-10, 0):min(x+w+10, image.shape[1])]  # 在裁剪后的图像上绘制红色矩形框以突出显示边界框内的内容及其周围10px内容  cv2.rectangle(crop_image, (max(x-10, 0), max(y-10, 0)), (min(x+w+10, image.shape[1]), min(y+h+10, image.shape[0])), (0, 0, 255), 2)  # 在裁剪后的图像上绘制红色矩形框以突出显示边界框内的内容及其周围10px内容  #cv2.imshow('Content with Border and Surrounding Area', crop_image)  # 显示带有红色边框和周围10px内容的裁剪后的图像  cv2.imwrite(f'red_border_{x}_{y}_{w}_{h}.jpg', crop_image)  cv2.waitKey(0)  cv2.destroyAllWindows()# 获取最大轮廓的边界框坐标  
# x, y, w, h = cv2.boundingRect(max_contour)  # # 裁剪图像以显示边界框内的内容及其周围10px内容  
# crop_image = image[max(y-10, 0):min(y+h+10, image.shape[0]), max(x-10, 0):min(x+w+10, image.shape[1])]  # # 在裁剪后的图像上绘制红色矩形框以突出显示边界框内的内容及其周围10px内容  
# cv2.rectangle(crop_image, (max(x-10, 0), max(y-10, 0)), (min(x+w+10, image.shape[1]), min(y+h+10, image.shape[0])), (0, 0, 255), 2)  # 在裁剪后的图像上绘制红色矩形框以突出显示边界框内的内容及其周围10px内容  
# cv2.imshow('Content with Border and Surrounding Area', crop_image)  # 显示带有红色边框和周围10px内容的裁剪后的图像  # cv2.waitKey(0)  
# cv2.destroyAllWindows()

识别红框

import cv2
import numpy as np# 加载图像
image = cv2.imread('red_border_1038_1886_6_6.jpg')# 将图像转换为灰度
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 二值化图像
_, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)# 找到图像中的轮廓
contours, _ = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 遍历每个轮廓,判断是否是闭合的圆
for contour in contours:# 进行轮廓近似,获取近似的多边形轮廓epsilon = 0.01 * cv2.arcLength(contour, True)approx = cv2.approxPolyDP(contour, epsilon, True)# 计算近似轮廓的周长approx_length = cv2.arcLength(approx, True)# 计算原始轮廓的周长contour_length = cv2.arcLength(contour, True)# 判断近似轮廓的周长是否接近于原始轮廓的周长if approx_length >= 0.9 * contour_length:# 绘制闭合的圆cv2.drawContours(image, [approx], -1, (0, 255, 0), 2)cv2.putText(image, 'Closed Circle', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)print("存在")# 显示结果图像
cv2.imshow('Result', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

相关文章:

opencv识别一张图片的多个红框,并截取红框的内容

需求 需要获取图片的红框的内容,实体的图片我就不放了 获取红框 先截取获得图片的多个轮廓 import cv2 import numpy as np # 加载图像并转换为灰度图像 image cv2.imread(image6.jpg) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 应用高斯模糊以减…...

数据库-事务

介绍: 事务是一组操作的集合,它是一个不可分割的工作单位,事物会把所有的操作作为一个整体一起向系统 提交或撤销操作请求,即这些操作要么同时成功,要么同时失败 操作:事务控制 开启事务:start…...

MySQL 使用开源审计插件

文章目录 前言1. 审计插件下载2. 审计插件参数2.1 server_audit_events2.2 server_audit_excl_users2.3 server_audit_output_type2.4 server_audit_file_path2.5 server_audit_file_rotate_now2.6 server_audit_file_rotate_size2.7 server_audit_file_rotations2.8 server_au…...

Python入门教程 | Python3 集合(Set)

Python3 集合(Set) 集合(set)是一个无序的不重复元素序列。 集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。 可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或…...

视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查的相关问题及解决方法2.0

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多…...

【C++模拟实现】反向迭代器的实现

【C模拟实现】反向迭代器的实现 目录 【C模拟实现】反向迭代器的实现反向迭代器的代码示例反向迭代器的模拟实现要点引入iterator模版参数rbegin()和rend()的实现 作者:爱写代码的刚子 时间:2023.9.5 前言:本篇博客主要介绍反向迭代器的实现&…...

Kubernetes技术--k8s核心技术持久化存储

有时候需要在集群中进行一些重要的数据进行持久化存储,然后需要的时候再进行挂载,那么下面我们一起来看看如何实现数据的持久化存储操作。 1.nfs网络存储 -1.找一台服务器做nfs的服务端,安装nfs。(这里我们直接在master上实现)。 这里应该找再单独的搭建一个node节点做持…...

【80天学习完《深入理解计算机系统》】第十四天 复习第三章

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…...

库中是如何实现string类的?

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…...

无涯教程-JavaScript - WORKDAY.INTL函数

描述 WORKDAY.INTL函数返回带有自定义周末参数的指定工作日数之前或之后的日期的序列号。周末参数指示哪些和多少天是周末。周末和指定为假期的任何日子均不视为工作日。 语法 WORKDAY.INTL (start_date, days, [weekend], [holidays])争论 Argument描述Required/OptionalS…...

STM32--蓝牙

本文主要介绍基于STM32F103C8T6和蓝牙模块实现的交互控制 简介 蓝牙(Bluetooth)是一种用于无线通信的技术标准,允许设备在短距离内进行数据交换和通信。它是由爱立信(Ericsson)公司在1994年推出的,以取代…...

java 实现原型模式

原型模式(Prototype Pattern)是一种创建型设计模式,它允许创建对象的副本,而无需暴露对象的创建细节。在Java中,原型模式通常通过克隆对象来实现。要实现原型模式,需要满足以下条件: 被克隆的对…...

maven本地安装jar包install-file,解决没有pom的问题

背景: 公司因为权限问题,没有所有的代码,内部maven还在搭建,所以需要拿到同事的jar包,本地install: mvn install:install-file -DgroupIdcom..framework -DartifactIdcloud-api -Dversion1.0.0-SNAPSHOT …...

【C++学习笔记】5、变量作用域

文章目录 【 1、局部变量 】【 2、全局变量 】【 3、局部变量和全局变量的初始化 】 作用域是程序的一个区域,一般来说有三个地方可以定义变量: 在函数或一个代码块内部声明的变量,称为局部变量。 在函数参数的定义中声明的变量,称…...

Python中的装饰器

迷途小书童的 Note 读完需要 5分钟 速读仅需 2 分钟 装饰器是一个非常有用而又常被误解的功能,可以让我们在不修改函数或类的源代码情况下给它们提供扩展功能。本文将通过具体示例带你深入理解 Python 装饰器的用法。 1 装饰器基础 装饰器本质上是一个函数&#xff…...

什么是RESTful API,Spring MVC如何支持RESTful架构

文章目录 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:Java框架 ✨文章内容:Spring MVC支持RESTful架构 🤝希望作者的文章能对你有所帮助&#xf…...

cin、cin.getline()、getline()的用法【C++】

一、cin>> 用法1&#xff1a;输入一个数字或字符 #include <iostream> using namespace std; int main () {int a,b;cin>>a>>b;cout<<ab<<endl;return 0; } 用法2&#xff1a;接收一个字符串&#xff0c;遇“空格”、“TAB”、“回车”…...

单向链表(c/c++)

链表是一种常见的数据结构&#xff0c;其中运用到了结构体指针&#xff0c;链表可以实现动态存储分配&#xff0c;换而言之&#xff0c;链表是一个功能强大的数组&#xff0c;可以在某个节点定义多种数据类型&#xff0c;可以实现任意的添加&#xff0c;删除&#xff0c;插入节…...

像linux 一样清理Windows C盘

像 linux 有命令 du -sh 查看文件夹大小 但是windows 可就没有这个命令了&#xff0c;就算有命令&#xff0c;也不能扫描子目录里面的文件 但是windows 可以借助 软件来清理&#xff0c;和linux 一样 文件上面是目录&#xff0c;下面是文件所占用空间大小的图&#xff0c;咋…...

在Linux 下制作启动盘以及dd命令使用

在Linux 下制作启动盘以及dd命令使用 1、在Linux 下制作启动盘&#xff0c;可使用如下命令&#xff1a;2、Linux dd 命令(1)参数说明: 3、dd应用实例(1)将本地的/dev/hdb整盘备份到/dev/hdd(2)将/dev/hdb全盘数据备份到指定路径的image文件(3)将备份文件恢复到指定盘(4)备份/de…...

C++ STL 容器内存管理机制

C STL容器内存管理探秘 在C开发中&#xff0c;STL&#xff08;标准模板库&#xff09;容器是高效数据处理的基石&#xff0c;其背后的内存管理机制直接影响程序性能与资源利用率。理解容器如何动态分配、释放内存&#xff0c;不仅能避免内存泄漏和碎片化问题&#xff0c;还能优…...

微信毕业设计基于微信小程序的易物小店交换系统

前言 Spring Boot 易物小店交换系统是一个基于 Web 的应用程序&#xff0c;利用 Spring Boot 框架构建&#xff0c;主要用于帮助用户实现物品交换的功能。该系统为用户提供了一个便捷、安全、高效的平台&#xff0c;让他们能够轻松地发布自己想要交换的物品信息&#xff0c;寻找…...

OpenClaw成本优化方案:GLM-4.7-Flash自建接口对比OpenAI API实测

OpenClaw成本优化方案&#xff1a;GLM-4.7-Flash自建接口对比OpenAI API实测 1. 为什么需要关注OpenClaw的Token消耗 上周我让OpenClaw帮我整理一个200页PDF的技术文档&#xff0c;第二天查看账单时发现OpenAI API调用费用高达37美元——这个数字让我意识到必须重新审视自动化…...

Linux Docker Compose 部署.NET+Vue+MySQL+Redis+Nginx 完整记录(亲测无坑)

写在前面&#xff1a;为什么用 Docker Compose&#xff1f;比单容器部署好在哪&#xff1f; 做容器化部署时&#xff0c;单靠docker run命令逐个启动 MySQL、Redis、后端、Nginx 容器会非常繁琐 —— 不仅要记大量命令参数&#xff0c;还得手动控制容器启动顺序、配置网络联动…...

Zotero-GPT:智能文献处理的技术实现与应用指南

Zotero-GPT&#xff1a;智能文献处理的技术实现与应用指南 【免费下载链接】zotero-gpt GPT Meet Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-gpt 一、价值定位&#xff1a;重新定义文献管理的智能化范式 1.1 技术架构的革新突破 Zotero-GPT作为Zot…...

旧设备焕新:OpenCore跨版本升级破局指南

旧设备焕新&#xff1a;OpenCore跨版本升级破局指南 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 痛点诊断&#xff1a;旧Mac的升级困境 每一台Mac都有其生命周期&…...

Hearthstone-Script:3大核心功能带你轻松玩转炉石传说自动化![特殊字符]

Hearthstone-Script&#xff1a;3大核心功能带你轻松玩转炉石传说自动化&#xff01;&#x1f525; 【免费下载链接】Hearthstone-Script Hearthstone script&#xff08;炉石传说脚本&#xff09;&#xff08;2024.01.25停更至国服回归&#xff09; 项目地址: https://gitco…...

VSCode集成clang-tidy实现多语言命名规范自动化检查

1. 为什么需要自动化命名规范检查 在团队协作开发中&#xff0c;代码命名规范就像交通规则一样重要。想象一下&#xff0c;如果每个司机都按照自己的习惯开车&#xff0c;那道路会乱成什么样子&#xff1f;代码也是如此。我曾经接手过一个遗留项目&#xff0c;发现同一个变量在…...

华为NPU上跑大模型?手把手教你用vLLM-Ascend插件部署Qwen2

华为NPU实战&#xff1a;基于vLLM-Ascend插件的高效大模型部署指南 1. 环境准备与基础配置 在华为Ascend NPU上部署大模型&#xff0c;首先需要确保硬件和软件环境满足基本要求。Atlas 800I A2或Atlas A2 Training系列设备是当前官方推荐的选择&#xff0c;操作系统需为Linux发…...

Font-Awesome-SVG-PNG 核心原理:深入解析SVG到PNG的转换机制

Font-Awesome-SVG-PNG 核心原理&#xff1a;深入解析SVG到PNG的转换机制 【免费下载链接】Font-Awesome-SVG-PNG Font Awesome split to individual SVG and PNG files of different sizes along with Node.JS based generator 项目地址: https://gitcode.com/gh_mirrors/fo/…...