如何在成对的浮点数之间插入逗号?

How can I insert commas between pairs of floating point numbers?

我想做什么

我想绘制边界框,指示从 REST Google Vision API 下载的 JSON 对象在本地拍摄的照片中识别出的对象。我想使用如下所示的 ImageMagick 调用绘制边界框。

convert output.jpg -draw 'stroke red fill none polygon 0,78.7 87,78 87,151 0,151' outputbox.png

我是怎么做到的

我在 Mac OS 10.15.4 上使用终端(bash,不是 zsh,我将它从 zsh 切换回 bash。)

我收到 google 的 JSON 响应,如下所示。

{
  "responses": [
    {
      "localizedObjectAnnotations": [
        {
          "mid": "/m/0jbk",
          "name": "Animal",
          "score": 0.776703,
          "boundingPoly": {
            "normalizedVertices": [
              {
                "y": 0.327939
              },
              {
                "x": 0.27193785,
                "y": 0.327939
              },
              {
                "x": 0.27193785,
                "y": 0.62985307
              },
              {
                "y": 0.62985307
              }
            ]
          }
        },

我使用 jq(如下所示)来解析响应,我想我可能没有使用最佳查询来实现我想要的。

输入

jq '.responses[0][][0].boundingPoly.normalizedVertices[] | if .x==null then 0 else .x*320 end, .y*240' img.json


输出

0 78.70536 87.020112 78.70536 87.020112 151.16473680000001 0 151.16473680000001

为了将它们作为绘图坐标输入到图像 magick convert 中,我想输出一个字符串,其中每两个数字用“,”连接成对,然后用空格分隔这些对,如下所示。

0,78.70536 87.020112,78.70536 87.020112,151.16473680000001 0,151.16473680000001

我已经在 sed 和 ssed 中尝试过正则表达式(使用 perl 的 -r 选项),但我只是在转动我的轮子。

这是我关于 Whosebug 的第一个问题,如果我犯了任何 n00b 错误,我深表歉意。

谢谢!

首先,用逗号连接 x-y 对,然后用空格连接结果字符串。例如(为清楚起见,省略了不相关的部分):

.normalizedVertices
| map("\(if has("x") then .x * 320 else 0 end),\(.y * 240)")
| join(" ")

Online demo