Чтобы преобразовать пакетные файлы Labelme json в набор изображений и меток, используя приглашение anaconda - PullRequest
0 голосов
/ 01 мая 2020

У меня есть набор масок изображений, которые были сгенерированы инструментом Labelme как файлы JSON, и в учебном пособии по Github (https://github.com/wkentaro/labelme/tree/master/examples/tutorial) показано, как преобразовать файл JSON в изображение файл, который мы используем следующий код командной строки

labelme_json_to_dataset apc2016_obj3.json -o apc2016_obj3_json

, однако это работает только для одного файла за раз, поэтому я пытался найти способ обработки всех файлов с использованием одного набора кода, я мы попробовали следующий код

setlocal
set "yourDir=C:\Users\Acer\Desktop\datasets\combined masks\"
set "yourExt=*.json"
pushd %yourDir%
for %%a in (*%yourExt%)do labelme_json_to_dataset %%a -o %%a
popd
endlocal

код работает теперь, читая имя файла и добавляя расширение файла. json однако, сохраняя файл в каталоге с тем же именем, включая. * Расширение 1022 * дает мне следующую ошибку

Traceback (most recent call last):
  File "c:\users\acer\.conda\envs\labelme\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\users\acer\.conda\envs\labelme\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\ACER\.conda\envs\labelme\Scripts\labelme_json_to_dataset.exe\__main__.py", line 7, in <module>
  File "c:\users\acer\.conda\envs\labelme\lib\site-packages\labelme\cli\json_to_dataset.py", line 65, in main
    PIL.Image.fromarray(img).save(osp.join(out_dir, 'img.png'))
  File "c:\users\acer\.conda\envs\labelme\lib\site-packages\PIL\Image.py", line 2131, in save
    fp = builtins.open(filename, "w+b")
FileNotFoundError: [Errno 2] No such file or directory: '000828.json\\img.png'

Я не знаком с cmd и мне требуется помощь при сохранении вывода в каталог с именем файла без. json extenstion

ниже приведен пример отдельного файла, который показывает, как должен выглядеть успешный запуск введите описание изображения здесь

(labelme) C:\Users\ACER\Desktop\datasets\combined masks>labelme_json_to_dataset 000814.json -o 000814
[[1m[33mWARNING[0m] [36mjson_to_dataset[0m:[36mmain[0m:[36m15[0m - [1m[33mThis script is aimed to demonstrate how to convert the JSON file to a single image dataset.[0m
[[1m[33mWARNING[0m] [36mjson_to_dataset[0m:[36mmain[0m:[36m17[0m - [1m[33mIt won't handle multiple JSON files to generate a real-use dataset.[0m
[[1m[37mINFO   [0m] [36mjson_to_dataset[0m:[36mmain[0m:[36m73[0m - [1m[37mSaved to: 000814[0m

(labelme) C:\Users\ACER\Desktop\datasets\combined masks>

1 Ответ

0 голосов
/ 04 мая 2020

Используйте команду FOR /?, чтобы прочитать о substitution of FOR variable references на последней странице справочной информации. Чтобы получить только базовое имя файла, можно использовать %%~na. Запустите это без ECHO OFF, чтобы вы могли видеть каждую команду.

setlocal
set "yourDir=C:\Users\Acer\Desktop\datasets\combined masks\"
set "yourExt=*.json"
pushd %yourDir%
for %%a in (*%yourExt%) do (labelme_json_to_dataset %%a -o %%~na)
popd
endlocal
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...