Imgs,GT,Edge,Gradient_all,Gradient_Foreground

news/2024/11/14 11:53:25/

保存一下:
做个记录:

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.ppmy.cn/news/1465271.html

相关文章

内网渗透-隧道搭建ssp隧道代理工具

内网渗透-隧道搭建&ssp隧道代理工具 目录 内网渗透-隧道搭建&ssp隧道代理工具spp隧道代理工具spp工作原理图cs上线主机spp代理通信服务端配置客户端配置CS配置设置CS生成木马的监听器配置CS监听上线的监听器生成木马 spp隧道搭建服务端配置客户端配置CS配置 内网穿透&a…

【Linux】Linux基本指令1

目录 1.软件,OS,驱动 1.1.操作系统 1.2.驱动 1.3.软件 2.Linux操作的特点 3.Linux操作指令 3.1.快速学习5条指令 3.1.1.pwd指令和ls指令 3.1.2.mkdir 3.1.3.cd 3.1.4.touch 3.2.ls指令详解 3.2.1.ls -l和ls -a 3.2.1.文件文件内容文件属性…

ch4网络层---计算机网络期末复习(持续更新中)

网络层概述 将分组从发送方主机传送到接收方主机 发送方将运输层数据段封装成分组 接收方将分组解封装后将数据段递交给运输层网络层协议存在于每台主机和路由器上 路由器检查所有经过它的IP分组的分组头 注意路由器只有3层(网络层、链路层、物理层) 网络层提供的服务 一…

数据在内存中的存储<C语言>

导言 在计算机中不同类型的数据在计算机内部存储形式各不相同,弄懂各种数据在计算机内部存储形式是有必要的,C语言的学习不能浮于表面,更要锻炼我们的“内功”,将来在写程序的时候遇见各种稀奇古怪的bug时,也便能迎刃而…

统计计算四|蒙特卡罗方法(Monte Carlo Method)

系列文章目录 统计计算一|非线性方程的求解 统计计算二|EM算法(Expectation-Maximization Algorithm,期望最大化算法) 统计计算三|Cases for EM 文章目录 系列文章目录一、基本概念(一)估算 π \pi π(二&…

dmdts连接kingbase8报错

dmdts连接kingbase报错 环境介绍1 人大金仓jdbc配置2 dmdts 人大金仓jdbc默认配置3 dmdts 修改jdbc配置4 达梦产品学习使用列表 环境介绍 dts版本 使用dmdts连接kingbase金仓数据库报错 无效的URL 对比jdbc连接串,修改配置解决 1 人大金仓jdbc配置 配置URL模版信息等 类名…

cssBFC

bfc:block format context 块级格式化上下文 css把html的元素当为盒子,每个盒子都有一套渲染规则,正常的渲染规则,比如设定盒子颜色,渲染出盒子颜色。 可以通过特定手段,可以使特定盒子触发bfc语法使渲染规…

博客开始使用 Cache Master 缓存插件

明月在给大家推荐 Cache Master 插件的时候(可参考【推荐个比较纯正的缓存插件——Cache Master】一文),仅仅是在其他站点上试用了一下,今天明月正式在博客上用上了 Cache Master,没有想到对 Dragon 主题的支持竟然是出…