家里做服务器开网站,建设工程规划许可证网站,网页设计作品及代码,哪里有网站开发公司1. 前言
之前实现了目标检测和图像分类任务的可视化脚本#xff0c;本章将最后一个分割任务的可视化脚本实现
效果展示如下#xff1a; 代码会在当前目录保存展示好的图片#xff0c;从左到右依次为#xff0c;原图、mask图、mask覆盖在原图的掩膜图 关于目标检测的可视化…1. 前言
之前实现了目标检测和图像分类任务的可视化脚本本章将最后一个分割任务的可视化脚本实现
效果展示如下 代码会在当前目录保存展示好的图片从左到右依次为原图、mask图、mask覆盖在原图的掩膜图 关于目标检测的可视化
VOC关于目标检测任务中XML(voc格式)标注文件的可视化
YOLO 关于目标检测任务中YOLO(txt格式)标注文件的可视化 图像分类图像分类任务的可视化脚本生成类别json字典文件 2. 代码介绍
因为分割的数据格式问题图像如何显示问题可能会出现一些问题。
代码使用了好几种不同的分割数据集测试均可实现可以保证大部分数据的可视化
具体的问题在后文介绍 2.1 目录
数据摆放如下所示
图像放在images目录下对应的GT图像放在masks文件下这里的文件名是保持对应的否则后续代码需要更改
show脚本放在data相同的路径 2.2 主函数
这里传入的root是images目录这样random可以随机取出一张图片。根据目录的索引自动找到图片对应的GT图像。 注如果文件名不相同的话需要自己在后面replace更换 这里的opacity 是掩膜的程度0-1直接越小效果越好 2.3 函数实现
这里运用的就是数字图像处理的内容可以参考数字图像处理 使用 PIL 打开图片可以避免一些不必要的错误。cv的格式太严格了不管是数据类型啊还是通道或者最后的np展示都需要相同的维度。而分割的GT一般都是8bit本人调试很久还是PIL打开方便 至于draw_image 函数就是数字图像处理的绘制边框内容因为matplotlib展示的时候会自动填色这样可视化的效果更好所以用matplotlib展示 2.4 结果展示
相同 opacity 展示
这里用绿色绘制边框红色掩膜填充 不同opacity 展示
opacity 0.5 opacity 0.1 opacity 0.9 3. 完整代码
代码
import cv2
import numpy as np
import os
import random
from PIL import Image
import matplotlib.pyplot as plt# 将mask绘制在原图
def draw_image(im,ms,brg,opacity):image_mask im.copy()contours, _ cv2.findContours(ms, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) # 查找轮廓image_mask cv2.drawContours(image_mask, contours, -1, (0, 255, 0), 2) # 绘制边界image_mask cv2.fillPoly(image_mask, contours, colorbrg) # 填充img_bgr cv2.addWeighted(im, opacity, image_mask, 1 - opacity, 0)return im,ms,img_bgr[:,:,::-1]def main(imagePath,labelPath,bgr,opacity):image np.array(Image.open(imagePath).convert(RGB))label np.array(Image.open(labelPath).convert(L))a,b,c draw_image(image,label,bgr,opacity)plt.figure(figsize(12,8))for index,i in enumerate((a,b,c)):plt.subplot(1,3,index1)plt.imshow(i)plt.savefig(./result.png)# plt.show()if __name__ __main__:root ./data/imagesimages_path [os.path.join(root,i) for i in os.listdir(root)]r random.randint(0,len(images_path)-1)img_path images_path[r] # 随机取出一张图片mask_path img_path.replace(images,masks)# opacity 越小掩膜效果越深main(imagePathimg_path, labelPathmask_path,bgr(0,0,255),opacity0.5)