项目场景:
在复现医学分割的一个代码的时候。
问题描述
把数据集换成自己的报错。
原因分析:
学长告诉我就是mask图是灰度图,这个代码处理的是RGB图,所以一直报错。应该把mask图转换成RGB图再处理。
解决方案:
学长说对了,但是对象错了。我最后发现是image本身是灰度图像。
我一直弄mask图一直报错报错,笑哭,之后改了输出也报错,原来是输入的问题(…)。
你看自己图片,右击图片属性,摘要,点击详细属性,里面有位深度一项。如果是RGB图,位深度是24;如果是灰度和索引图,位深度是8;灰度是白灰黑表示的图,索引图有可能是彩色的,但也是8位深。
我用的数据集的原图就是灰度图(mask也是),但我的报错原因是原图是灰度图。
按着下面这个代码就可以把单通道变成三通道图了。
处理好图片再放入模型就好了。
import cv2
import os
import numpy as np
path = ' 源文件所在目录 图片文件'
savefilepath = '输出文件所在目录 图片文件'
datanames = os.listdir(path)
for i in datanames:
img = cv2.imread(path + '/' + str(i))
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img2 = np.zeros_like(img)
img2[:, :, 0] = gray
img2[:, :, 1] = gray
img2[:, :, 2] = gray
cv2.imwrite(savefilepath + i, img2)
参考: