计算A图片所有颜色占B图片红色区域的百分比

news2025/6/6 9:30:06
import cv2
import numpy as np


def calculate_overlap_percentage(a_image_path, b_image_path):
    # 读取A组和B组图像
    a_image = cv2.imread(a_image_path)
    b_image = cv2.imread(b_image_path)

    # 将图像从BGR转为HSV色彩空间,便于颜色筛选
    a_hsv = cv2.cvtColor(a_image, cv2.COLOR_BGR2HSV)
    b_hsv = cv2.cvtColor(b_image, cv2.COLOR_BGR2HSV)

    # 设置B组红色的HSV范围
    lower_red = np.array([0, 100, 100])
    upper_red = np.array([10, 255, 255])

    # 提取B组红色区域的掩膜
    b_red_mask = cv2.inRange(b_hsv, lower_red, upper_red)

    # 设置A组颜色区域的HSV范围(棕色和绿色)
    # 棕色的HSV范围
    lower_brown = np.array([10, 30, 30])
    upper_brown = np.array([25, 255, 200])

    # 绿色的HSV范围
    lower_green = np.array([35, 50, 50])
    upper_green = np.array([85, 255, 255])

    # 提取A组棕色和绿色区域的掩膜
    a_brown_mask = cv2.inRange(a_hsv, lower_brown, upper_brown)
    a_green_mask = cv2.inRange(a_hsv, lower_green, upper_green)

    # 合并A组的棕色和绿色区域掩膜
    a_color_mask = cv2.bitwise_or(a_brown_mask, a_green_mask)

    # 计算B组红色区域的像素数量
    b_red_area = cv2.countNonZero(b_red_mask)

    # 在A组中找到与B组红色区域重合的区域
    a_overlap = cv2.bitwise_and(a_color_mask, b_red_mask)

    # 计算A组与B组红色区域重合的像素数量
    a_overlap_area = cv2.countNonZero(a_overlap)

    # 计算A组有颜色区域占B组红色区域的百分比
    overlap_percentage = (a_overlap_area / b_red_area) * 100 if b_red_area != 0 else 0

    return overlap_percentage


# 示例调用
a_image_path = "path_to_a_image.jpg"
b_image_path = "path_to_b_image.jpg"
percentage = calculate_overlap_percentage(a_image_path, b_image_path)
print(f"A组颜色区域占B组红色区域的百分比为: {percentage:.2f}%")

下面查看提取的mask是否正确

    # 调整显示图像的大小(设置为目标宽度 600 像素)
    height, width = b_red_mask.shape
    target_width = 600
    target_height = int(target_width * height / width)

    # 使用 cv2.resize 调整图像大小
    b_red_mask_resized = cv2.resize(b_red_mask, (target_width, target_height))

    # 显示调整后的B组红色掩膜
    cv2.imshow("B Red Mask", b_red_mask_resized)
    cv2.waitKey(0)  # 等待按键按下
    cv2.destroyAllWindows()  # 关闭所有窗口

 下面直接输出图片是户更方便

cv2.imwrite("a_color_mask.png", a_color_mask)

 

把a组与b组文件夹下的所有对应的图片进行计算,然后输出到一个txt文件 

import cv2
import numpy as np
import os

def calculate_overlap_percentage(a_image_path, b_image_path):
    # 读取A组和B组图像
    a_image = cv2.imread(a_image_path)
    b_image = cv2.imread(b_image_path)

    # 将图像从BGR转为HSV色彩空间,便于颜色筛选
    a_hsv = cv2.cvtColor(a_image, cv2.COLOR_BGR2HSV)
    b_hsv = cv2.cvtColor(b_image, cv2.COLOR_BGR2HSV)

    # 设置B组红色的HSV范围
    lower_red = np.array([0, 100, 100])
    upper_red = np.array([10, 255, 255])
    
    # 提取B组红色区域的掩膜
    b_red_mask = cv2.inRange(b_hsv, lower_red, upper_red)

    # 设置A组颜色区域的HSV范围(棕色和绿色)
    # 棕色的HSV范围
    lower_brown = np.array([10, 30, 30])
    upper_brown = np.array([25, 255, 200])
    
    # 绿色的HSV范围
    lower_green = np.array([35, 50, 50])
    upper_green = np.array([85, 255, 255])
    
    # 提取A组棕色和绿色区域的掩膜
    a_brown_mask = cv2.inRange(a_hsv, lower_brown, upper_brown)
    a_green_mask = cv2.inRange(a_hsv, lower_green, upper_green)
    
    # 合并A组的棕色和绿色区域掩膜
    a_color_mask = cv2.bitwise_or(a_brown_mask, a_green_mask)

    # 计算B组红色区域的像素数量
    b_red_area = cv2.countNonZero(b_red_mask)

    # 在A组中找到与B组红色区域重合的区域
    a_overlap = cv2.bitwise_and(a_color_mask, b_red_mask)

    # 计算A组与B组红色区域重合的像素数量
    a_overlap_area = cv2.countNonZero(a_overlap)

    # 计算A组有颜色区域占B组红色区域的百分比
    overlap_percentage = (a_overlap_area / b_red_area) * 100 if b_red_area != 0 else 0
    
    return overlap_percentage

def process_images(a_folder, b_folder, output_file):
    # 获取文件夹中的所有文件
    a_files = sorted(os.listdir(a_folder))
    b_files = sorted(os.listdir(b_folder))

    # 打开输出文件
    with open(output_file, 'w') as f:
        # 遍历文件夹中的每一对图片
        for a_file, b_file in zip(a_files, b_files):
            # 拼接完整的文件路径
            a_image_path = os.path.join(a_folder, a_file)
            b_image_path = os.path.join(b_folder, b_file)

            # 确保文件是图片文件
            if not a_file.endswith(('.jpg', '.png', '.jpeg')) or not b_file.endswith(('.jpg', '.png', '.jpeg')):
                continue

            # 计算重叠百分比
            percentage = calculate_overlap_percentage(a_image_path, b_image_path)

            # 写入结果到txt文件
            f.write(f'{a_file} vs {b_file}: {percentage:.2f}%\n')

            print(f'{a_file} vs {b_file}: {percentage:.2f}%')

# 文件夹路径
a_folder = 'path_to_a_folder'  # A组文件夹路径
b_folder = 'path_to_b_folder'  # B组文件夹路径
output_file = 'overlap_results.txt'  # 输出的txt文件路径

# 处理文件夹中的所有图片并输出到txt文件
process_images(a_folder, b_folder, output_file)

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

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

相关文章

2024-2025-2-《移动机器人设计与实践》-复习资料-8……

2024-2025-2-《移动机器人设计与实践》-复习资料-1-7-CSDN博客 08 移动机器人基础编程 单选题(6题) 在ROS中,用于移动机器人速度控制的消息类型通常是? A. std_msgs/StringB. geometry_msgs/TwistC. sensor_msgs/ImageD. nav_ms…

如何监测光伏系统中的电能质量问题?分布式光伏电能质量解决方案

根据光伏相关技术规范要求,通过10(6)kV~35kV电压等级并网的变流器类型分布式电源应在公共连接点装设满足GB/T 19862要求的A级电能质量监测装置。用于监测分布式光伏发出的电能的质量,指标包括谐波、电压偏差、电压不平衡度、电压波动和闪变等。 CET中电…

SPL 轻量级多源混算实践 4 - 查询 MongoDB

除了以上常见数据源,还有 NoSQL、MQ 等数据源,其中以 MongoDB 最为常用。我们用 SPL 连接 MongoDB 做计算。 导入 MongoDB 数据。 外部库 SPL 支持的多种数据源大概分两类,一类是像 RDB 有 JDBC 直接使用,或者文件等直接读取&a…

Maestro CLI云端测试以及github cl,bitrise原生cl的测试流程

昨天我们了解了maestro测试框架以及maestro studio工具以及创建我们的第一个flow,然后通过例子在maestro cli云端进行测试请求并且成功,今天我们就在我们自己的app上简单的进行三种测试流程,maestro cli云端测试,github cl集成测试…

25年宁德时代新能源科技SHL 测评语言理解数字推理Verify题库

宁德时代新能源科技的SHL测评中,语言理解部分主要考察阅读理解、逻辑填空和语句排序等题型,要求应聘者在17分钟内完成30题。阅读理解需要快速捕捉文章主旨和理解细节信息;逻辑填空则要根据语句逻辑填入最合适的词汇;语句排序是将打…

AutoGenTestCase - 借助AI大模型生成测试用例

想象一下,你正在为一个复杂的支付系统编写测试用例,需求文档堆积如山,边缘场景层出不穷,手动编写让你焦头烂额。现在,有了AutoGenTestCase,这个AI驱动的“测试用例生成机”可以从需求文档中自动生成数百个测…

vue+cesium示例:3Dtiles三维模型高度调整(附源码下载)

接到一位知识星友的邀请,实现他需要3Dtiles三维模型的简单高度调整需求,适合学习Cesium与前端框架结合开发3D可视化项目。 demo源码运行环境以及配置 运行环境:依赖Node安装环境,demo本地Node版本:推荐v18。 运行工具:…

线程池RejectedExecutionException异常

文章目录 1、报错2、定位3、修复4、线程池使用的一点思考 1、报错 检索项目日志时,发现一个异常堆栈信息,核心报错: java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.CompletableFuture$AsyncSupply480a10c7…

当 “欧洲版 Cursor” 遇上安全危机

在 AI 编程助手蓬勃发展的当下,安全问题正成为行业不容忽视的隐忧。近期,AI 编程助手公司 Replit 与号称 “欧洲版 Cursor” 的 Lovable 之间,因安全漏洞问题掀起了一场风波,引发了业界的广泛关注。​ Replit 的员工 Matt Palmer…

【如何在IntelliJ IDEA中新建Spring Boot项目(基于JDK 21 + Maven)】

AA. 我的开发环境配置与核心工具链解析 一、开发环境全览 C:\Users\Again>java -version java version "21.0.1" 2023-10-17 LTS Java(TM) SE Runtime Environment (build 21.0.112-LTS-29) Java HotSpot(TM) 64-Bit Server VM (build 21.0.112-LTS-29, mixed m…

(Python网络爬虫);抓取B站404页面小漫画

目录 一. 分析网页 二. 准备工作 三. 实现爬虫 1. 抓取工作 2. 分析工作 3. 拼接主函数&运行结果 四. 完整代码清单 1.多线程版本spider.py: 2.异步版本async_spider.py: 经常逛B站的同志们可能知道,B站的404页面做得别具匠心&…

【氮化镓】GaN HMETs器件物理失效分析进展

2021 年 5 月,南京大学的蔡晓龙等人在《Journal of Semiconductors》期刊发表了题为《Recent progress of physical failure analysis of GaN HEMTs》的文章,基于多种物理表征技术及大量研究成果,对 GaN HEMTs 的常见失效机制进行了系统分析。文中先介绍失效分析流程,包括使…

Abaqus连接器弹片正向力分析:

.学习重点: • 外部幾何匯入。 • 建立解析剛性面。 • 利用Partition與局部撒點來提高網格品質。 • 材料塑性行為(材料非線性)。 • 考慮大變形(幾何非線性)。 • 接觸(邊界非線性)。 • 平移組裝。 • 設定輸出參數。 • 討論Shear Locking & Hourglassing效應。 1) 設…

鸿蒙生态再添翼:身份证银行卡识别引领智能识别技术新篇章

随着信创国产化战略的深入推进和鸿蒙操作系统(HarmonyOS Next)的迅速崛起,市场对兼容国产软件生态的需求日益增长。在这一背景下,中安身份证识别和银行卡识别技术应运而生,为鸿蒙生态的发展注入了新的活力。 移动端身份…

NLP学习路线图(十九):GloVe

自然语言处理(NLP)的核心挑战在于让机器理解人类语言的丰富含义。词向量(Word Embeddings)技术通过将词语映射到高维实数空间,将离散的符号转化为连续的向量,为NLP任务奠定了坚实基础。在众多词向量模型中&…

如何使用DAXStudio将PowerBI与Excel连接

如何使用DAXStudio将PowerBI与Excel连接 之前分享过一篇自动化文章:PowerBI链接EXCEL实现自动化报表,使用一个EXCEL宏工作薄将PowerBI与EXCEL连接起来,今天分享另一个方法:使用DAX Studio将PowerBI与EXCEL连接。 下面是使用DAX S…

软考 系统架构设计师系列知识点之杂项集萃(79)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(78) 第141题 软件测试一般分为两个大类:动态测试和静态测试。前者通过运行程序发现错误,包括()等方法;后者采用人工和计算机…

UVa12298 Super Joker II

UVa12298 Super Joker II 题目链接题意输入格式输出格式 分析AC 代码 题目链接 UVa12298 Super Joker II 题意 有一副超级扑克,包含无数张牌。对于每个正合数p,恰好有4张牌:黑桃p,红桃p,梅花p和方块p(分别…

【网络安全】SRC漏洞挖掘思路/手法分享

文章目录 Tip1Tip2Tip3Tip4Tip5Tip6Tip7Tip8Tip9Tip10Tip11Tip12Tip13Tip14Tip15Tip16Tip17Tip18Tip19Tip20Tip21Tip22Tip23Tip24Tip25Tip26Tip27Tip28Tip29Tip30Tip1 “复制该主机所有 URL”:包含该主机上的所有接口等资源。 “复制此主机里的链接”:包括该主机加载的第三…

【AFW+GRU(CNN+RNN)】Deepfakes Detection with Automatic Face Weighting

文章目录 Deepfakes Detection with Automatic Face Weighting背景pointsDeepfake检测挑战数据集方法人脸检测面部特征提取自动人脸加权门控循环单元训练流程提升网络测试时间增强实验结果Deepfakes Detection with Automatic Face Weighting 会议/期刊:CVPRW 2020 作者: …