나는 RGB 이미지를 가지고있다. 이 이미지를 가져 오면 matplotlib.color
을 사용하여 HSV로 변환하고 결과 배열을 dict에 저장합니다. 이 이미지를 표시하려면 Image.fromarray
에 mode = 'HSV'
을 사용합니다. 내가 뭘 잘못하고 있는지 모르겠지만 이미지가 표시 될 때 코드가 아래에 보이는 엉망이 생깁니다. 어떤 도움을 주셔서 감사합니다. 아래의 코드 스 니펫은 가져온 이미지 집합에 대해 대략적으로 발생합니다.파이썬 3.5 : 말도 안되는 이미지를 생성하는 PIL Image.fromarray
RGB HSV에 코드 : 데이터의
from skimage import io
import matplotlib.colors as mpclr
import glob
import os
from PIL import Image, ImageOps
types = ("\*.tif", "\*.jpg", "\*.ppm")
imagePath = []
def importAllImgs(folderPath):
for ext in types:
imagePath.extend(glob.glob(folderPath + ext))
im_coll = io.ImageCollection(imagePath, conserve_memory = True)
im_array = []
for i in range(len(im_coll)):
#CONVERSION HAPPENS HERE
image = im_coll[i]
fltImg = np.around((np.array(image)/255.0), decimals = 2)
imgHSV = mpclr.rgb_to_hsv(fltImg)
im_array.append(imgHSV)
return im_array, imagePath
저장 :
def organizeAllData(self, imgArrList, imgPathList):
self.allImages = dict()
self.imageKeys = imgPathList
for i in range(len(imgPathList)):
self.allImages[imgPathList[i]] = {'H': imgArrList[i][:, :, 0],
'S': imgArrList[i][:, :, 1],
'V': imgArrList[i][:, :, 2]}
self.hsvValues = []
self.labelValues = []
return self.allImages
건설 표시 이미지의 배열 :
def getImage(self, imageOfInterest):
H = self.allImages[imageOfInterest]['H'][:,:]
S = self.allImages[imageOfInterest]['S'][:,:]
V = self.allImages[imageOfInterest]['V'][:,:]
imgArray = np.dstack((H,S,V))
return imgArray
이미지의 표시 :
preImArray = halThrThsnd.getImage(self.imagePaths[self.imageIndex])
self.preIm = Image.fromarray(preImArray, 'HSV')
그리고 마지막으로, 결과 이미지 :
scikit-image에서 이미 이미지를 모두 가져 오지 않는 이유는 무엇입니까? 훨씬 더 전문화되어 있기 때문에 오류가 발생할 확률이 적습니다. 색상 크기 및 색상 형식에 따라 이러한 모든 작업 (예 : 내부 수레 또는 부호없는 정수)에 적합한 유형을 유지하는 것이 번거로울 수 있습니다. 물론 현재 이미지를 출력 할뿐만 아니라 색상 변환도 할 수 있습니다. – sascha