.ndjson转化为图片

一、引言

本文方法来自知乎大佬帖子,链接: 序列和图片之间的转化 - 隅子酱的文章 - 知乎.
我在使用quick draw数据集时,最开始转化的.npy文件,生成了黑底的灰度图/三通道RGB图。在实际开发过程中,我发现需要使用白底,笔迹清晰的图片,所以转化了官方提供的.ndjson文件,得到了清晰的白底图。
这里是Quick Draw数据集链接.

二、转化步骤

1.ndjson文件转为json文件
2.json文件转为img

三、.ndjson转为python可读取的.json文件

可执行代码

官方提供了转化方法:simplified-parser.js 可以直接解析,将其解析后的数据保存为json,python就能读取了。代码如下

var fs = require('fs');
var ndjson = require('ndjson'); // npm install ndjson

function parseSimplifiedDrawings(fileName, callback) {
  var drawings = [];
  var fileStream = fs.createReadStream(fileName)
  fileStream
    .pipe(ndjson.parse())
    .on('data', function(obj) {
      drawings.push(obj)
    })
    .on("error", callback)
    .on("end", function() {
      callback(null, drawings)
    });
}

parseSimplifiedDrawings("dataset_path/full_simplified_cat.ndjson", function(err, drawings) {
  if(err) return console.error(err);
  drawings.forEach(function(d) {
    // Do something with the drawing
    console.log(d.key_id, d.countrycode);
  })
  console.log("# of drawings:", drawings);
  var filename = "dataset_path/full_simplified_cat.json";//这里保存
  fs.writeFileSync(filename, JSON.stringify(drawings));//这里保存
})

代码使用方法

我电脑上没有运行js文件的软件,但是好在可以用NodeJs来运行js文件
NodeJs安装详细步骤点击这里
1.首先,新建txt文件,将上面代码复制并修改路径
2.注意代码提示,即打开cmd,进行npm install ndjson
3.将文件名改成.js,如将test.txt改成test.js
4.将test.js文件放在cmd显示的文件目录下,或切换路径到test.js所在目录下
5.输入node test.js 回车运行即可得到json文件

四、.json文件转为img

import json
from scipy import interpolate
import pylab as pl
f = open("dataset_path/full_simplified_cat.json") //json文件所在绝对路径
setting = json.load(f)
for j in range(0,1000):      #转化保存1000个图
    for i in range(0,len(setting[j]['drawing'])):
        x = setting[j]['drawing'][i][0]
        y = setting[j]['drawing'][i][1]
        f=interpolate.interp1d(x,y,kind="slinear") #线性插值
        pl.plot(x,y,'k')
    ax = pl.gca()  #一个猫的所有线条画一起
    ax.xaxis.set_ticks_position('top')  # convert x,没有ax这几句猫就反着了
    ax.invert_yaxis()
    pl.axis('off')
    pl.savefig("dataset_path/cat/%d.png"%j)  //保存位置
    pl.close()  #不关闭的话所有图都画一起了

运行代码就得到图片

参考链接:
NodeJS入门(一)—nodejs详细安装步骤
序列和图片之间的转化 - 隅子酱的文章 - 知乎.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值