将gray图片转成三通道 您所在的位置:网站首页 单通道图转换为三通道图 将gray图片转成三通道

将gray图片转成三通道

2024-07-11 20:38| 来源: 网络整理| 查看: 265

在使用yolov3进行目标检测的过程中,我遇到了这样的一个奇怪的错误 根据报错信息已知道需要得到三个值,但是我只给出了一个值 当时第一时间我也没有多想这个错误具体是什么情况,下意识网https://www.cnblogs.com/wywshtc/p/12699028.html上冲浪搜了搜这个错误看了前人所留的知识,果不其然我发现了应该这样修改代码

img = transforms.ToTensor()(Image.open(img_path).convert('RGB')) # img = transforms.ToTensor()(Image.open(img_path)) # 把下面这行代码加入.convert('RGB')

果不其然代码正常运行了,detect检测出了目标,检测结束之后检查output结果让我大吃一惊 在这里插入图片描述 图像变成这个样子了,要知道我送进去的可是x-ray铸件图片,黑白的灰度图像。 在师兄的提示后联想到了开始的错误,我进行过gray2RGB的处理,也就是将单通道的gray转成了三通道的RGB,虽然不知道为什么会变成这个明晃晃的颜色,但是至少定位了错误的具体位置。 分析:灰度图像只有一个通道,而RGB有三个通道

解决办法

将一个通道的灰度图像,复制两次,得到三通道所需图像 写一个脚本,专门用来处理送进检测网络的图片

import cv2 import os from PIL import Image import numpy as np file_dir = "/home/jx/PyTorch-YOLOv3/data/samples/" out_dir = "/home/jx/PyTorch-YOLOv3/data/test/" a = os.listdir(file_dir) for i in a: print(i) I = Image.open(file_dir + i) L = I.convert('L') a = np.array(L) image = np.expand_dims(a, axis=2) image = np.concatenate((image, image, image), axis=-1) cv2.imwrite(out_dir + i, image)

处理完成之后,再次将图片送到检测网络,继续使用

img = transforms.ToTensor()(Image.open(img_path))

程序没有报错,同时出现bbox网络检测出缺陷 在这里插入图片描述 参考: https://www.cnblogs.com/wywshtc/p/12699028.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有