2014-12-01 3 views
0

Я пишу немного gui для тестирования opencv-функций - чтобы легко изменять значения параметров (для определения порога, обнаружения пятен и т. Д.). Я начал писать gui, используя tkinter, и получил результат с функцией Image.fromarray - мое изображение получило синий оттенок; когда я показываю cv2.imshow, нет такого оттенка, поэтому он должен быть артефактом ofarry, I blv. Я проверил режим и его RGB, как ожидалось. Пара изображений находится до и после обнаружения блоба (который рисует маленькие круги). Левая пара - opencv, а правая пара - в моем tkinter gui.Функция PIL fromarray дает wierd colormap

 tk_img=Image.fromarray(newImg) 
     tk_photo=ImageTk.PhotoImage(tk_img) 
     mod=tk_img.mode 
     print('mode:'+str(mod)) 
     label1 = Tkinter.Label(self, image=tk_photo) 
     label1.image = tk_photo 
     label1.grid(row = Imrow, column = Im2col, columnspan = Im2col, sticky=Tkinter.NW) 
     self.update() 

     cv2.imshow('orig', currentImg) 
     cv2.waitKey(0) 
     cv2.imshow('current', newImg) 
     cv2.waitKey(0) 
     cv2.destroyAllWindows() 

openCV windows on left, my gui on right - why is right pic blue???

+0

Так что я сделал запутано обходной путь сохранения изображения в файл и темп чтения: г = cv2.imwrite («temp.jpg», IMG) tk_img = Image.open ('temp.jpg') tk_photo = ImageTk.PhotoImage (tk_img) –

+0

Я бы посмотрел, делает ли подушка одинаковой или если это исправлено в патче. (Подушка также работает на 3.x.) –

ответ

2

OpenCV работает с изображениями, используя BGR заказ цвета. Вам нужно изменить порядок цветов.

newImg = newImg[...,[2,1,0]] 

Посмотрите этот протектор для получения дополнительной информации PIL rotate image colors (BGR -> RGB)

Смежные вопросы