在处理深度学习项目时,我有很多不需要颜色的图像。我救了他们:
import matplotlib.pyplot as plt
plt.imsave('image.png', image, format='png', cmap='gray')
Run Code Online (Sandbox Code Playgroud)
然而后来当我检查图像的形状时,结果是:
import cv2
img_rgb = cv2.imread('image.png')
print(img_rgb.shape)
(196,256,3)
Run Code Online (Sandbox Code Playgroud)
因此,即使我查看的图像是灰度图像,我仍然有 3 个颜色通道。我意识到我必须进行一些代数运算才能将这 3 个通道转换为 1 个单通道。
我已经尝试过线程“如何在 Python 中将 RGB 图像转换为灰度? ”中描述的方法,但我很困惑。
例如,何时使用以下方法进行转换:
from skimage import color
from skimage import io
img_gray = color.rgb2gray(io.imread('image.png'))
plt.imsave('image_gray.png', img_gray, format='png')
Run Code Online (Sandbox Code Playgroud)
但是,当我加载新图像并检查其形状时:
img_gr = cv2.imread('image_gray.png')
print(img_gr.shape)
(196,256,3)
Run Code Online (Sandbox Code Playgroud)
我尝试了该线程上的其他方法,但结果是相同的。我的目标是获得形状为 (196,256,1) 的图像,因为卷积神经网络的计算强度会大大降低。
任何帮助,将不胜感激。
还没有找到任何可以应用于我的问题的答案,所以这里是:
我有一个图像的初始数据框,我想根据该图像的描述将其分成两个,这是“描述”列中的一个字符串。
我的问题是并非所有的描述都是一样的。这是我的意思的一个例子:
一些图像被加速,而另一些则没有。这就是我想用来分割数据集的标准。
然而,即使是加速和非加速的图像描述也各不相同。
我的策略是将每个包含“ACC”的字符串(这将涵盖所有加速图像)重命名为“ACCELERATED IMAGE”。
然后我可以这样做:
df_Accl = df[df.Description == "ACCELERATED IMAGE"]
df_NonAccl = df[df.Description != "ACCELERATED IMAGE"]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?这只是我想出的一个策略,如果有任何其他更有效的方法可以随意说出来。