0

我需要将来自 google_streetview API 的结果另存为图像(.jpg、.png)

我正在一个小项目中测试图像识别算法。我正在从 google street 下载一些图片,我需要将这些图片保存为 .jpg 或 .png 格式。

 library(googleway)

 p <- google_streetview(location = c(centerlat,centerlng),              
              size = c(500,500),                
              panorama_id = NULL,               
              output = "plot",              
              heading = 0,              
              fov = 15,             
              pitch = 0,                
              response_check = FALSE,               
              key = key)

我尝试使用 download.file 和库成像器:

第一的:

 download.file(p, destfile="test.jpg")

if (stringr::str_count(imagePath, "http") > 0) { 中的错误:参数长度为零

第二:

 library(imager)
 imager::save.image(p,"test.jpeg")

imager::save.image(p, "test.jpeg") 中的错误:第一个参数应该是图像

如何自动保存这些图像?

4

1 回答 1

2

这有点猜测,因为我没有 API 密钥。

这是google_streetview函数的最后一点:

map_url <- constructURL(map_url, c(location = location, pano = panorama_id, 
    size = size, heading = heading, fov = fov, pitch = pitch, 
    key = key))
if (output == "plot") {
    z <- tempfile()
    utils::download.file(map_url, z, mode = "wb")
    pic <- jpeg::readJPEG(z)
    file.remove(z)
    graphics::plot(0:1, 0:1, type = "n", ann = FALSE, axes = FALSE)
    return(graphics::rasterImage(pic, 0, 0, 1, 1))
}
else {
    return(map_url)
}

请注意,如果output="plot"然后将map_url下载到tempfile,将其读入 jpeg,然后将其绘制出来,并删除临时文件。我们怎样才能得到那个jpeg?

如果output="html"map_url返回。这必须是图像的 URL。所以调用output="html"并存储返回值,然后下载:

url = google_streetview(..., output="html")
t = tempfile()
download.file(url, t, model="wb")
message(t, " should be a JPEG...")

你已经尝试过这样做,output="plot"在这种情况下它返回return(graphics::rasterImage(pic, 0, 0, 1, 1))的总是一个 NULL 值。

于 2019-02-05T16:04:24.037 回答