PIL fromarray函数给出了奇怪的色彩映射

时间:2014-12-01 15:07:05

标签: python opencv tkinter python-imaging-library

我正在编写一个用于测试opencv函数的小gui - 轻松更改参数值(用于阈值处理,blob检测等)。我开始使用tkinter编写gui并使用Image.fromarray函数获得更好的结果 - 我的图像获得蓝色色调;当我用cv2.imshow显示时,没有这样的色调,所以它必须是fromarry的神器,我blv。我按预期检查了模式及其RGB。图像对在斑点检测之前和之后(绘制小圆圈)。左边是opencv,右边是我的tkinter gui。

        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???

1 个答案:

答案 0 :(得分:2)

OpenCV使用BGR颜色顺序处理图像。您需要更改颜色顺序。

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

了解更多信息PIL rotate image colors (BGR -> RGB)