1. 程式人生 > 實用技巧 >voc分割資料集 pil調色盤

voc分割資料集 pil調色盤

voc分割資料集有兩種,資料夾名字分別是SegmentationClass,SegmentationClassAug,其中SegmentationClass資料夾圖片樣式如下:

SegmentationClassAug資料夾圖片樣式如下:

今天來說下SegmentationClass資料夾帶彩色圖的,讀一個deeplab的pytorch程式碼的時候,我就在找是怎麼把顏色對應到標籤圖的,找了半天沒有,但是發現最後的處理得到的標籤圖確實是0-21的畫素,可是哪裡處理了的了.

    def _make_img_gt_point_pair(self, index):
        _img = Image.open(self.images[index]).convert('RGB')
        _target = Image.open(self.categories[index])

        return _img, _target

只有一處是通過PIL讀取圖片,然後我驚奇的發現僅僅是通過這個讀就已經轉成了0-21的標籤圖!!!???why?

    def _make_img_gt_point_pair(self, index):
        _img = Image.open(self.images[index]).convert('RGB')
        _target = Image.open(self.categories[index])

        _img.show()
        _target.show()

        import numpy
        img = numpy.array(_img)
        targe = numpy.array(_target)

用pilshow出來,還是彩色圖

但是我用numpy看targe已經是單通道了...然後我再用opencv顯示,

   def _make_img_gt_point_pair(self, index):
        _img = Image.open(self.images[index]).convert('RGB')
        _target = Image.open(self.categories[index])

        _img.show()
        _target.show()


        import numpy
        img = numpy.array(_img)
        targe = numpy.array(_target)

        import cv2
        cv2.imshow("opencv-show-pil",targe)
        cv2.waitKey()

        mm = cv2.imread(self.categories[index],-1)
        cv2.imshow("opencv-read", mm)
        cv2.waitKey()


這裡可以看到,直接讀取路徑確實是彩色圖,但是經過pil開啟之後,就變成了標籤圖!神奇吧!