Imgs,GT,Edge,Gradient_all,Gradient_Foreground

保存一下:
做个记录:

import cv2
import os
import numpy as np# 对整张图片做canny检测  得到纹理图
def canny_all(input_path, output_path):# 遍历文件夹中的所有文件for filename in os.listdir(input_path):# 构造完整的文件路径image_path = os.path.join(input_path, filename)# 确保是图片文件if os.path.isfile(image_path) and filename.lower().endswith(('.png', '.jpg')):# 读取图片image = cv2.imread(image_path)if image is None:print(f"图片 {filename} 读取失败,请检查路径是否正确")else:# 转换为灰度图gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 应用Canny边缘检测grads = cv2.Canny(gray, 100, 200)  # 参数可以根据需要调整# 构造输出文件路径file_root, _ = os.path.splitext(filename)save_path = os.path.join(output_path, file_root + '.png')# 保存结果cv2.imwrite(save_path, grads)print(f"Canny边缘检测结果已保存到 {save_path}")else:print(f"跳过非图片文件 {filename}")print("Canny_all 检测完成!")def canny_Foreground(GT_path, Canny_all_path, output_path):# 遍历第一个文件夹下的所有图片for filename in os.listdir(GT_path):# 构造两个文件夹中文件的完整路径img_path_f1 = os.path.join(GT_path, filename)img_path_f2 = os.path.join(Canny_all_path, filename)# 读取图片A和BimageA = cv2.imread(img_path_f1, cv2.IMREAD_GRAYSCALE)imageB = cv2.imread(img_path_f2, cv2.IMREAD_GRAYSCALE)# 检查图像B是否正确读取if imageB is None:print(f"在文件夹 {Canny_all_path} 中读取图片 {filename} 失败")continue# 检查图像A是否正确读取if imageA is None:print(f"在文件夹 {GT_path} 中读取图片 {filename} 失败,请检查路径是否正确")continue# 检查图像尺寸是否相同if imageA.shape != imageB.shape:print(f"图像尺寸不同,跳过文件:{filename}")continue# 处理图像imageA[np.where(imageB == 0)] = 0# 构造输出文件路径save_path = os.path.join(output_path, filename)# 保存处理后的图像Ccv2.imwrite(save_path, imageA)print(f"前景纹理图已保存:{save_path}")print("canny_Foreground 检测完成!")def getEdge(GT_path, output_path):# 遍历第一个文件夹下的所有图片for filename in os.listdir(GT_path):# 构造完整路径GT_img = os.path.join(GT_path, filename)# 构造输出文件路径  输出为pngfile_root, _ = os.path.splitext(filename)save_path = os.path.join(output_path, file_root + '.png')# 读取图片image = cv2.imread(GT_img, cv2.IMREAD_GRAYSCALE)# 使用腐蚀操作稍微减少物体内部的白色区域,避免边界之外的误检kernel = np.ones((3, 3), np.uint8)  # 创建结构元素,这里使用3x3的矩形结构erosion = cv2.erode(image, kernel, iterations=1)# 使用膨胀操作突出边缘dilation = cv2.dilate(erosion, kernel, iterations=1)# 通过膨胀后的与膨胀前的图像做差集,得到边界boundaries = cv2.subtract(dilation, erosion)# 保存边界图像cv2.imwrite(save_path, boundaries)print(f"边界图已保存:{save_path}")print("边界处理完毕!")# opencv 读入图像时  img.shape代表  H W C
# GT图像需要用灰度方式读入  里面像素只有两种 0 或者 255def main():# 图片文件夹根路径root_path = r'E:/project/pytorch-Project/MGNet-two-canny/TestDataset/COD10K/'# Imgs图像路径Imgs_path = os.path.join(root_path, 'Imgs')  # 替换为你的图片文件夹路径# GT图像路径GT_path = os.path.join(root_path, 'GT')  # 替换为你的图片文件夹路径# 全景纹理图存储路径Gradient_Canny_path = os.path.join(root_path, 'Gradient_Canny')# 前景纹理图存储路径Gradient_Foreground_path = os.path.join(root_path, 'Gradient_Foreground')# 边界图存储路径Edge_path = os.path.join(root_path, 'Edge')# 确保输出文件夹存在if not os.path.exists(Gradient_Canny_path):os.makedirs(Gradient_Canny_path)if not os.path.exists(Gradient_Foreground_path):os.makedirs(Gradient_Foreground_path)if not os.path.exists(Edge_path):os.makedirs(Edge_path)# 先对整张图像做canny检测canny_all(Imgs_path, Gradient_Canny_path)# 再生成前景纹理图canny_Foreground(GT_path, Gradient_Canny_path, Gradient_Foreground_path)# 生成边界图getEdge(GT_path,Edge_path)if __name__ == "__main__":main()

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

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

相关文章

GB-T 42929-2023 互联网金融智能风险防控技术要求

GB-T 42929-2023 互联网金融智能风险防控技术要求 互联网金融作为金融创新的重要领域,近年来发展迅猛,但同时也带来了诸多风险和挑战。为了规范互联网金融行业的健康发展,提高风险防控能力,中国国家标准委员会制定了《GB-T 42929…

C++回调函数

#include <iostream> #include <functional> // 为了使用 std::function // 声明一个回调函数类型 typedef std::function<void()> Callback11;// 调用函数&#xff0c;它接受一个回调函数作为参数 void process(Callback11 callback123) {// 在这里执…

直播领域新宠—第三代大模型无人直播系统:提升销售业绩的秘密武器

随着科技的飞速发展和人们对智能化生活的追求&#xff0c;直播领域也迎来了革新性的突破。第三代大模型无人直播系统&#xff0c;作为直播领域的新宠&#xff0c;正以其独特的魅力和优势&#xff0c;成为提升销售业绩的秘密武器。 首先&#xff0c;第三代大模型无人直播系统具…

2024山软创新实训:软件系统架构

软件架构 本文着重介绍本应用&#xff1a;基于开源LLM的易学大模型软件系统的架构。在经过2个月的探索、选型、实验、开发后&#xff0c;我们团队终于把整个系统的各块拼图搭建了起来&#xff0c;现在剩下的是集成、评测、优化和部署的工作。 1. Distributed System 整个项目…

5月31日,每日信息差

第一、小米汽车官方宣布&#xff0c;5 月新增 9 家门店&#xff0c;目前已在全国 30 城开业 70 家门店&#xff0c;6 月计划新增 19 家 第二、科技巨头谷歌、Meta、微软、AMD、英特尔、博通、思科和惠普成立了一个名为 「超级加速链路」 的联盟&#xff08;UALink&#xff09;…

【Android】

hint在text显示提示内容 设置主键&#xff0c;在mainactivity // 获取SharedPreferences对象存放的用户名和密码&#xff0c;并设为相应组件的值 //指定key的值&#xff0c;及获取不到值时使用的默认值 String sName sp.getString("name", "unknown")…

媲美苹果、三星uwb芯片,飞睿智能UWB SIP芯片方案,创新无线传输、测距、精准定位新纪元

超宽带&#xff08;UWB&#xff09;技术作为一种新兴的无线通信技术&#xff0c;以其高精度定位、低功耗、高安全性和强抗干扰能力等优势&#xff0c;在全球范围内得到了广泛关注和快速应用。 2019 年&#xff0c;苹果iPhone11搭载UWB芯片&#xff0c;火极一时的AirDrop隔空投…

MODIS L1B数据规格介绍

1.MODIS 仪器概述 MODIS是EOS AM-1系列卫星的主要探测仪器&#xff0c;也是EOS Terra平台上唯一进行直接广播的对地观测仪器。MODIS是当前世界上新一代“图谱合一”的光学遥感仪器&#xff0c;具有36个光谱通道&#xff0c;分布在0.4-14um的电磁波谱范围内&#xff0c;波段范围…

Docker Hub 国内镜像源配置

Docker Hub 国内镜像源配置 Docker Hub 国内镜像源是指在国内境内提供 Docker 镜像服务的镜像源。由于国际网络带宽等问题&#xff0c;国内用户下载 Docker 镜像通常速度较慢。因此&#xff0c;为了解决这个问题&#xff0c;一些国内的公司和组织提供了 Docker 镜像的国内镜像…

MySQL--MHA高可用及读写分离

一、什么是高可用 1.企业级高可用标准&#xff1a;全年无故障时间 全年无故障时间全年故障时间具体时间99.9%0.1%525.6 minkeeplive双主 &#xff08;切换需要人为干预&#xff09;99.99%0.01%52.56 minMHA &#xff08;半自动化&#xff09;99.999%0.001%5.256 minPXC、MGR、…

android Seekbar当点击的时候有一个圆圈

最近项目中Seekbar的时候遇到一个问题&#xff1a;点击进度条或者拖动进度条的时候&#xff0c;seekbar出现一个圆形的半透阴影/白色圆圈&#xff1a; <xxxxxxxxxSeekBarandroid:layout_width"wrap_content"android:layout_height"40dp"android:backgro…

解决3D模型变黑及贴图不显示的问题---模大狮模型网

在3D建模和渲染过程中&#xff0c;模型变黑或贴图不显示是常见的挑战之一。这不仅影响了模型的视觉效果&#xff0c;还可能导致后续的工作流程受阻。本文将针对这两个问题&#xff0c;提供详细的解决方法和步骤&#xff0c;帮助读者快速有效地解决问题。 一、检查并调整光照设置…

Day 8:1461. 检查一个字符串是否包含所有长度为 K 的二进制子串

Leetcode 1461. 检查一个字符串是否包含所有长度为 K 的二进制子串 给你一个二进制字符串 s 和一个整数 k 。如果所有长度为 k 的二进制字符串都是 s 的子串&#xff0c;请返回 true &#xff0c;否则请返回 false 。 截取每个长度为 k 的字符串&#xff0c;加入 Set 中&#x…

分布式数据库的扩容思路

分布式数据库的扩容是一项复杂的工程&#xff0c;它要求数据库能够在不中断服务的情况下增加更多的存储资源和计算能力。扩容通常涉及增加节点&#xff08;服务器实例&#xff09;和重新分配数据。这个过程需要谨慎进行&#xff0c;以确保数据的一致性、可用性和性能不受影响。…

根据状态转移图实现时序电路 (三段式状态机)

看图编程 * ** 代码 module seq_circuit(input C ,input clk ,input rst_n,output wire Y ); reg [1:0] current_stage ; reg [1:0] next_stage ; reg Y_reg; //输出//第一段 &#xff1a; 初始化当前状态和…

自学动态规划——最长重复子数组(子序列问题)

最长重复子数组 718. 最长重复子数组 - 力扣&#xff08;LeetCode&#xff09; 第一次接触&#xff0c;确实会有些懵&#xff0c;但是看了题解&#xff0c;仔细想想&#xff0c;确实是这么回事。要点如下&#xff1a; dp数组含义——dp[i][j]表示当num1取i个&#xff0c;num…

如何在Linux系统中搭建Kafka集群

一、概述 Kafka是一个由Apache软件基金会开发的开源流处理平台&#xff0c;是一个由Scala和Java编写的高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。 Kafka集群依赖于Zookeeper进行协调&#xff0c;注册在同一个Zookeeper集群中的…

汇总区间,合并区间

题目一&#xff1a; 代码如下&#xff1a; vector<string> summaryRanges(vector<int>& nums) {vector<string> ret;if (nums.size() 0)return ret;int n nums.size();int i 0;while (i < n){int prev i;i;while (i < n && nums[i] n…

烧脑的逻辑图又来了,精力绝对不是花费在做图上。

逻辑图设计之所以比较耗费精力&#xff0c;主要是因为它需要进行深入的思考和分析&#xff0c;以确保设计的逻辑正确、完整和可行。以下是一些可能导致逻辑图设计耗费精力的原因&#xff1a; 复杂性&#xff1a;逻辑图设计通常涉及到复杂的业务流程和系统架构。设计师需要理解各…

Spring boot 集成thymeleaf

Spring boot 集成thymeleaf 背景 自己通过Spring boot集成通义千问实现了一个智能问答系统。Spring boot集成通义千问已经完成&#xff0c;现在需要做一个简单的页面展示&#xff0c;作为一个八年没有摸过前端的后端开发人员&#xff0c;不得不又拿起了html和thymeleaf。 Sp…