我一直在将rgb图像转换为灰度图像,下面是代码
import numpy
import glob
import cv2
import csv
import math
import os
import string
from skimage.color import rgb2gray
from PIL import Image
mylist = [f for f in glob.glob("*.jpg")]
for imagefile in mylist:
img_color = cv2.imread(imagefile)
image = cv2.resize(img_color,(100,100),interpolation = cv2.INTER_AREA)
img_gray = rgb2gray(image)
img_gray.flatten()
我没有将新图像保存到我的当前文件夹中。 谁能帮我这个忙。
答案 0 :(得分:2)
我认为是因为skimage。你为什么不只使用opencv。
import numpy
import glob
import cv2
import csv
import math
import os
import string
from skimage.color import rgb2gray
from PIL import Image
mylist = [f for f in glob.glob("*.jpg")]
for imagefile in mylist:
img_color = cv2.imread(imagefile)
image = cv2.resize(img_color,(100,100),interpolation = cv2.INTER_AREA)
img_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#img_gray = rgb2gray(image)
img_gray.flatten()
cv2.imwrite("gray"+imagefile,img_gray)
答案 1 :(得分:0)
对我来说,用枕头做这项工作将是最有效的方法。
from PIL import Image
img = Image.open('image.png').convert('LA')
img.save('greyscale.png')
您可以参考https://stackoverflow.com/a/45338831/9851541
还可以尝试
import imageio
import numpy as np
import matplotlib.pyplot as plt
pic = imageio.imread('DemoImage.png')
gray = lambda rgb : np.dot(rgb[... , :3] , [0.299 , 0.587, 0.114])
gray = gray(pic)
plt.imshow(gray, cmap = plt.get_cmap(name = 'gray'))
答案 2 :(得分:0)
如果您愿意,也可以一步一步完成此操作,方法是添加一个附加参数,如下所示:
gray = cv2.imread(imagefile, cv2.IMREAD_GRAYSCALE)
cv2.imshow('gray', gray)
答案 3 :(得分:0)
基本上,您需要添加用于保存图像文件的代码:
import numpy
import glob
import cv2
import csv
import math
import os
import string
from skimage.color import rgb2gray
from skimage.io import imsave # skimage method for saving image
from PIL import Image
mylist = [f for f in glob.glob("*.jpg")]
for imagefile in mylist:
img_color = cv2.imread(imagefile)
image = cv2.resize(img_color,(100,100),interpolation = cv2.INTER_AREA)
img_gray = rgb2gray(image)
img_gray.flatten()
imsave("gray"+imagefile, img_gray) # save the image
或使用opencv
img_gray = img_gray*255
cv2.imwrite("gray"+imagefile, img_gray.astype("uint8"))
但是,如果您想完全在skimage中实现
import glob
from skimage.io import imread, imsave
from skimage.color import rgb2gray
from skimage.transform import resize
mylist = [f for f in glob.glob("*.jpg")]
for imagefile in mylist:
img_color = imread(imagefile)
image = resize(img_color, (100, 100))
img_gray = rgb2gray(image)
img_gray.flatten()
imsave("gray" + imagefile, img_gray)