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

使用pytorch和opencv根据颜色相似性提取图像

需求:将下图中的花朵提取出来。

代码:

import cv2
import torch
import numpy as np
import timedef get_similar_colors(image, color_list, threshold):# 将图像和颜色列表转换为torch张量device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')image_tensor = torch.from_numpy(image.astype(np.float32)).to(device)color_tensor = torch.tensor(color_list, dtype=torch.float32).to(device)# 计算每个像素与颜色列表中每个颜色的距离distances = torch.cdist(image_tensor.view(-1, 3), color_tensor, p=2).view(image_tensor.shape[0], image_tensor.shape[1], -1)# 找到最小距离及其索引min_distances, _ = torch.min(distances, dim=-1)# 创建掩码,标记接近目标颜色的像素mask = min_distances < threshold# 根据掩码提取接近颜色的部分result = torch.where(mask.unsqueeze(-1), image_tensor, torch.zeros_like(image_tensor))# 将结果转换回numpy数组result_np = result.cpu().numpy().astype(np.uint8)return result_np
# 读取图像s
image = cv2.imread('flower2.jpg')
# 定义颜色列表,每个颜色用BGR格式表示
color_list = [(15, 220, 255),(30, 50, 220)]
# 定义颜色接近度的阈值
threshold = 100
time_start = time.time()
# 提取接近颜色的部分
extracted_image = get_similar_colors(image, color_list, threshold)
time_end = time.time()
time = time_end - time_start
print("time: ", time)# 显示原始图像和提取结果
cv2.imshow('Original Image', image)
cv2.imshow('Extracted Image', extracted_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

进一步,输出掩码部分的黑白图像

import cv2
import torch
import numpy as np
import timedef get_similar_colors(image, color_list, threshold):# 将图像和颜色列表转换为torch张量device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')image_tensor = torch.from_numpy(image.astype(np.float32)).to(device)color_tensor = torch.tensor(color_list, dtype=torch.float32).to(device)# 计算每个像素与颜色列表中每个颜色的距离distances = torch.cdist(image_tensor.view(-1, 3), color_tensor, p=2).view(image_tensor.shape[0], image_tensor.shape[1], -1)# 找到最小距离及其索引min_distances, _ = torch.min(distances, dim=-1)# 创建掩码,标记接近目标颜色的像素mask = min_distances < threshold# 将符合条件的像素设置为黑色result = np.ones_like(image_tensor)result[mask] = [0, 0, 0]  # 设置为黑色return result
# 读取图像s
image = cv2.imread('your/image/path')
# 定义颜色列表,每个颜色用BGR格式表示
color_list = [(50, 15, 0), (45, 10, 0), (30, 10, 0)]
# 定义颜色接近度的阈值
threshold = 100
time_start = time.time()
# 提取接近颜色的部分
extracted_image = get_similar_colors(image, color_list, threshold)
time_end = time.time()
time = time_end - time_start
print("time: ", time)# 显示原始图像和提取结果
cv2.imshow('Original Image', image)
cv2.imshow('Extracted Image', extracted_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

相关文章:

使用pytorch和opencv根据颜色相似性提取图像

需求&#xff1a;将下图中的花朵提取出来。 代码&#xff1a; import cv2 import torch import numpy as np import timedef get_similar_colors(image, color_list, threshold):# 将图像和颜色列表转换为torch张量device torch.device(cuda if torch.cuda.is_available() el…...

MySQL 8.X 报错处理

1.重新加载配置 reload the configuration mysql> ALTER INSTANCE RELOAD KEYRING; ERROR 1227 (42000): Access denied; you need (at least one of) the ENCRYPTION_KEY_ADMIN privilege(s) for this operation 提示需要ENCRYPTION_KEY_ADMIN权限 重新授权 GRANT ENCR…...

Ubuntu 22.04安装OpenJDK 17

步骤一&#xff1a;更新软件包 sudo apt update步骤二&#xff1a;安装openjdk-17 sudo apt install openjdk-17-jdk当系统要求输入密码时&#xff0c;请输入密码。然后键入 Y 并按 Enter 继续安装 步骤三&#xff1a;查看安装版本 java -version步骤四&#xff1a;查看安装…...

【时序预测】时间序列有哪些鲁棒的归一化方法

时间序列数据在金融、气象、医疗等领域中广泛存在&#xff0c;而股票数据作为典型的时间序列之一&#xff0c;具有非平稳性、噪声多、波动大等特点。为了更好地进行数据分析和建模&#xff0c;归一化是一个重要的预处理步骤。然而&#xff0c;由于时间序列数据的特殊性&#xf…...

nlp第九节——文本生成任务

一、seq2seq任务 特点&#xff1a;输入输出均为不定长的序列 自回归语言模型&#xff1a; 由前面一个字预测下一个字的任务 encoder-decoder结构&#xff1a; Encoder-Decoder结构是一种基于神经网络完成seq2seq任务的常用方案 Encoder将输入转化为向量或矩阵&#xff0c;其…...

STM32MP1xx的启动流程

https://wiki.st.com/stm32mpu/wiki/Boot_chain_overview 根据提供的知识库内容&#xff0c;以下是STM32 MPU启动链的详细解析&#xff1a; 1. 通用启动流程 STM32 MPU启动分为多阶段&#xff0c;逐步初始化外设和内存&#xff0c;并建立信任链&#xff1a; 1.1 ROM代码&…...

wgcloud-server端部署说明

Wgcloud 是一款开源的轻量级服务器监控系统&#xff0c;支持多平台&#xff0c;可对服务器的 CPU、内存、磁盘、网络等指标进行实时监控。 以下是 Wgcloud Server端的详细部署步骤&#xff1a; 环境准备 服务器&#xff1a; 至少准备两台服务器&#xff0c;一台作为监控端&a…...

大模型Agent:人工智能的崭新形态与未来愿景

在人工智能技术高歌猛进的当下&#xff0c;大模型 Agent 作为 AI 领域的关键研究方向&#xff0c;正日益彰显出其独有的魅力以及广阔无垠的应用前景。大模型 Agent 不但具备对环境的感知、自主的理解、决策的制定以及行动的执行能力&#xff0c;而且能够游刃有余地应对繁杂任务…...

专题二最大连续1的个数|||

1.题目 题目分析&#xff1a; 给一个数字k&#xff0c;可以把数组里的0改成1&#xff0c;但是只能改k次&#xff0c;然后该变得到的数组能找到最长的子串且都是1。 2.算法原理 这里不用真的把0变成1&#xff0c;因为改了比较麻烦&#xff0c;下次用就要改回成1&#xff0c;这…...

【ORACLE】ORACLE19C在19.13版本前的一个严重BUG-24761824

背景 最近在某客户的ORACLE开发环境(oracle 19.10)中&#xff0c;发现一个非常奇怪情况, 开发人员反馈&#xff0c;有一条SQL&#xff0c;查询了两个sum函数作为两个字段&#xff0c; select sum(c1),sum(c2) from ...当两个sum一起出现时&#xff0c;第一个sum的结果不对&am…...

2025国家护网HVV高频面试题总结来了03(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 0x1 高频面试题第一套 0x2 高频面试题第二套 0x3 高频面试题第三套 0x4高频面试题第四套 0x1 高频面试题…...

CentOS vs Ubuntu - 常用命令深度对比及最佳实践指南20250302

CentOS vs Ubuntu - 常用命令深度对比及最佳实践指南 引言 在 Linux 服务器操作系统领域&#xff0c;CentOS 和 Ubuntu 是广泛采用的发行版。它们在命令集、默认工具链及生态系统方面各有特点。本文深入剖析 CentOS 与 Ubuntu 在常用命令层面的异同&#xff0c;并结合实践案例…...

SQL命令详解之常用函数

目录 1 简介 2 字符串函数 2.1 字符串函数语法 2.2 字符串函数练习 3 数学函数 3.1 数学函数语法 3.2 数学函数练习 4 日期时间函数 4.1 日期时间函数语法 4.2 日期时间函数练习 5 条件函数 5.1 条件函数语法 5.2 条件函数练习 6 总结 1 简介 在SQL中我们经常会用…...

IndexError: index 0 is out of bounds for axis 1 with size 0

IndexError: index 0 is out of bounds for axis 1 with size 0 欢迎来到英杰社区&#xff0c;这里是博主英杰https://bbs.csdn.net/topics/617804998 报错原因 数组或数据结构为空 如果数组或 DataFrame 在指定的维度上没有任何元素&#xff08;例如&#xff0c;没有列&#x…...

C++学习之C++初识、C++对C语言增强、对C语言扩展

一.C初识 1.C简介 2.第一个C程序 //#include <iostream> //iostream 相当于 C语言下的 stdio.h i - input 输入 o -output 输出 //using namespace std; //using 使用 namespace 命名空间 std 标准 &#xff0c;理解为打开一个房间&#xff0c;房间里有我们所需…...

k8s面试题总结(八)

1.K8s部署服务的时候&#xff0c;pod一直处于pending状态&#xff0c;无法部署&#xff0c;说明可能的原因 Node节点的资源不足&#xff0c;yaml文件资源限制中分配的内存&#xff0c;cpu资源太大&#xff0c;node宿主机资源没那么大&#xff0c;导致无法部署。部署pod的yaml文…...

《今日-AI-编程-人工智能日报》

一、AI行业动态 荣耀发布“荣耀阿尔法战略” 荣耀在“2025世界移动通信大会”上宣布&#xff0c;将从智能手机制造商转型为全球领先的AI终端生态公司&#xff0c;并计划未来五年投入100亿美元建设AI设备生态。荣耀展示了基于GUI的个人移动AI智能体&#xff0c;并推出多款AI终端…...

Koupleless 2024 年度报告 2025 规划展望

Koupleless 2024 年度报告 & 2025 规划展望 赵真灵 &#xff08;花名&#xff1a;有济&#xff09; Koupleless 负责人 蚂蚁集团技术专家 Koupleless 社区的开发和维护者&#xff0c;曾负责基于 K8s 的应用研发运维平台、Node/Pod 多级弹性伸缩与产品建设&#xff0c;当前主…...

C与C++中inline关键字的深入解析与使用指南

文章目录 引言一、历史背景与设计哲学1.1 C中的inline1.2 C中的inline 二、核心机制对比2.1 编译行为2.2 链接模型2.3 存储类说明符&#xff08;详细解析&#xff09;C的灵活组合C的限制原理 补充说明&#xff1a; 三、典型应用场景3.1 C中的使用场景3.2 C中的使用场景 四、现代…...

记录linux安装mysql后链接不上的解决方法

首先确保是否安装成功 systemctl status mysql 如果没有安装的话&#xff0c;执行命令安装 sudo apt install mysql-server 安装完成后&#xff0c;执行第一步检测是否成功。 通常初始是没有密码的&#xff0c;直接登陆 sudo mysql -u root 登录后执行以下命令修改密码&…...

CANN/asc-devkit:ReduceAll临时空间大小获取

GetReduceAllMaxMinTmpSize 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: http…...

从“收音机”到“手机芯片”:聊聊CMOS单级放大器在真实产品里的那些事儿

从“收音机”到“手机芯片”&#xff1a;CMOS单级放大器的工业进化史 上世纪60年代&#xff0c;当第一台全晶体管收音机问世时&#xff0c;工程师们或许不会想到&#xff0c;那些分立元件组成的放大器电路&#xff0c;有朝一日会以纳米级尺寸被集成在指甲盖大小的芯片里。CMOS单…...

对比按需计费与套餐taotoken token plan在长期项目中的成本优势分析

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比按需计费与套餐&#xff1a;Taotoken Token Plan 在长期项目中的成本优势分析 1. 项目背景与成本考量 在长期依赖大模型 API …...

如何在Windows上快速挂载ISO镜像?WinCDEmu虚拟光驱终极指南

如何在Windows上快速挂载ISO镜像&#xff1f;WinCDEmu虚拟光驱终极指南 【免费下载链接】WinCDEmu 项目地址: https://gitcode.com/gh_mirrors/wi/WinCDEmu 还在为ISO、IMG等光盘镜像文件无法直接使用而烦恼吗&#xff1f;还在为没有物理光驱而无法读取光盘内容而困扰吗…...

数据保护双引擎:深入解析HyperSnap与HyperCDP的核心原理与选型指南

1. 数据保护的基石&#xff1a;为什么需要HyperSnap和HyperCDP&#xff1f; 想象一下你正在编辑一份重要文档&#xff0c;突然电脑蓝屏了。如果没保存&#xff0c;几小时的工作可能付诸东流——这就是数据保护要解决的核心问题。在企业级存储中&#xff0c;HyperSnap快照和Hype…...

3分钟上手Windhawk:像安装App一样轻松定制Windows系统

3分钟上手Windhawk&#xff1a;像安装App一样轻松定制Windows系统 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk 你是否厌倦了Windows系统一成不变的界…...

告别DDPG训练不稳定!用SAC(软性演员-评论家)算法搞定复杂环境强化学习

告别DDPG训练不稳定&#xff01;用SAC&#xff08;软性演员-评论家&#xff09;算法搞定复杂环境强化学习 在机器人控制、自动驾驶仿真等连续控制任务中&#xff0c;强化学习算法的稳定性往往决定了项目成败。许多工程师都经历过这样的困境&#xff1a;使用DDPG&#xff08;深度…...

离线地图项目救星:手把手教你用微图批量下载并管理多源瓦片(附避坑点)

离线地图实战指南&#xff1a;微图工具链与多源瓦片管理全解析 在智慧园区建设、车载导航系统开发或野外作业场景中&#xff0c;稳定可靠的地图服务往往是刚需。但现实情况是&#xff0c;这些场景常面临网络覆盖不稳定甚至完全离线的挑战。传统解决方案要么依赖预装商业地图数…...

别再死记0.7V了!用Multisim仿真带你玩转二极管三种等效模型(附实战电路分析)

用Multisim仿真破解二极管模型的三大迷思&#xff1a;从理论到实战的深度探索 在电子工程的学习道路上&#xff0c;二极管总是那个让人又爱又恨的元件。它看似简单&#xff0c;却藏着无数让初学者抓狂的细节。你是否也曾困惑&#xff1a;为什么教科书总说硅管压降是0.7V&#x…...

CANN/asc-devkit Div除法函数文档

Div 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言&#xff0c;原生支持C和C标准规范&#xff0c;主要由类库和语言扩展层构成&#xff0c;提供多层级API&#xff0c;满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann/a…...