1. 程式人生 > 其它 >Lab-VOC資料集(多分類)製作

Lab-VOC資料集(多分類)製作

Lab-VOC資料集(多分類)製作

1.使用精靈標記助手標註

  • 標記時對一張圖片標記四次
  • 匯出時一張原圖對應四張標記圖
  • 處理標記圖時預先將標記圖分為四類,對應每一分類,檔案數量相同且與原圖數量相等(這一步手動操作比較麻煩)

我的資料夾設定

轉換灰度

  • 執行四次,每次更改對應路徑
import cv2
import os
path = 'attachments/0'
path1 = 'attachments/0_puts'
file_list = os.listdir(path)
for file in file_list:
    I = cv2.imread(path+'/'+file)
    imGray = cv2.cvtColor(I, cv2.COLOR_BGR2GRAY)
    cv2.imwrite(path1+"/"+file,imGray)
    cv2.imshow('frame',imGray)
    cv2.waitKey(1)

灰度設值

  • 我把四類分別設定成了固定值10,11,12,13
  • 執行四次,每次更改對應路徑
import cv2 as cv
import os
path = 'attachments/3_puts'
path1 = 'attachments/3_puts_13'
file_list = os.listdir(path)
for file in file_list:
    img=cv.imread(path+"/"+file)
    imgCopy = img
    imgCopy[imgCopy > 0] = 13
    cv.imwrite(path1+"/"+file,imgCopy)

四圖合成

import os
import cv2
import numpy as np

def fourPicCompose(img0,img1,img2,img3):
    imgResult = np.zeros((512,512)) # 已知圖片大小
    imgResult = img0 + img1 + img2 + img3
    imgResult[imgResult > 20] = 10 # 防止重合,重合時值設定為第一類的值
    return imgResult

path = 'attachments/0_puts_10'
file_list = os.listdir(path)
for file in file_list:
    fileName=file[:-5] # 得到檔案的基礎名'(?)_'
    print(fileName)
    #讀取四個檔案塊的特定名稱的圖片,
    img0=cv2.imread('attachments/'+'0_puts_10'+'/'+fileName+'1.png',cv2.IMREAD_GRAYSCALE)
    img1=cv2.imread('attachments/'+'1_puts_11'+'/'+fileName+'2.png',cv2.IMREAD_GRAYSCALE)
    img2=cv2.imread('attachments/'+'2_puts_12'+'/'+fileName+'3.png',cv2.IMREAD_GRAYSCALE)
    img3=cv2.imread('attachments/'+'3_puts_13'+'/'+fileName+'4.png',cv2.IMREAD_GRAYSCALE)

    # 得到四合一合成圖
    imgResult=fourPicCompose(img0,img1,img2,img3)

    cv2.imshow('frame',imgResult)
    cv2.waitKey(1)

    cv2.imwrite('attachments/results/'+fileName+'.png',imgResult)

Tips

  • 無論用cv2還是PIL轉換灰度圖,直接讀取後圖片的shpae還是[???,???,3]。使用cv2讀取時加上引數得cv2.imread(???,cv2.IMREAD_GRAYSCALE)