1. 程式人生 > >使用labelme制作自己的數據集

使用labelme制作自己的數據集

轉化 通過 json 路徑 nac 輸入a .json data 文件


# python3 conda create
--name=labelme python=3.6 source activate labelme # conda install -c conda-forge pyside2 # conda install pyqt pip install pyqt5 # pyqt5 can be installed via pip on python3 pip install labelme

這是在anaconda下安裝labelme

安裝好後在cmd輸入activate labelme激活labelme環境

在輸入labelme運行程序

技術分享圖片

技術分享圖片

通過open讀取文件,選擇create polygons對想要的區域進行編輯

隨後會生成如下文件:

技術分享圖片

找到labelme安裝路徑下的script,找到labelme_json_to_dataset.exe所在目錄

將所有.json文件復制粘貼到這下面,並且在此目錄下運行cmd,激活labelme,輸入指令

python labelme_json_to_dataset.exe 圖片文件.json

技術分享圖片

即可獲得一個圖片文件.json的文件夾

技術分享圖片

對於每個json文件生成一個dataset(包含 img.png,info.yaml,label.png,label_names.txt, label_viz.png):

技術分享圖片

其中json文件夾下的label.png為16位格式,要轉化為8位 vs2015+opencv:

#include <stdio.h>
#include <iostream>
using namespace std;
using namespace cv;
int main(void) {
    char buff1[100];
    char buff2[100];
    for (int i = 1; i<51; i++) {
        sprintf_s(buff1, "C:/mypic/labelme_json/%d_json/label.png
", i); sprintf_s(buff2, "C:/mypic/cv2_mask/%d.png", i); //sprintf(buff1,"/media/lj/FA68-10A6/test_drug/disp/disp_%d.png",i); //sprintf(buff2,"/media/lj/FA68-10A6/test_drug/disp_8/disp_%d.png",i); Mat src; //Mat dst; src = imread(buff1, CV_LOAD_IMAGE_UNCHANGED); Mat ff = Mat::zeros(src.rows, src.cols, CV_8UC1); for (int k = 0; k<src.rows; k++) { for (int kk = 0; kk<src.cols; kk++) { int n = src.at<ushort>(k, kk); ff.at<uchar>(k, kk) = n; } } //src.copyTo(dst); //imshow("haha",ff*100); //waitKey(0); imwrite(buff2, ff); } return 0; }

不過我使用是這段代碼時一直出錯,後來有看到說新版的labelme直接生產8位的圖片,只是表現為彩色而已,那我就先姑且這麽認為吧

 

使用labelme制作自己的數據集