【问题标题】:Send an image file using opencpu for processing使用opencpu发送图像文件进行处理
【发布时间】:2015-05-26 12:32:43
【问题描述】:

我是 R 和 OpenCpu 新手。 我已经能够使用函数创建和部署一个简单的 R 包,并使用 curl 对该函数进行 REST 调用,获取 json 响应。

我在 Windows 7 上使用 R 3.1.2 64 位。

我现在想将图像文件(例如 jpg 或 png)发送到 R 函数,对其进行处理并以 text/json 的形式发回响应。

opencpu 有可能吗? 我应该使用什么格式和内容类型?

我想做这样的事情:

curl -v http://server:port/ocpu/library/mylibrary/R/myimagefunc/<format?> -H "Content-Type: <content-type?>" <some_file.png>

这个 REST url 将嵌入到一个 Web 应用程序中,为用户提供文件上传功能。

----- 编辑 ------

aboutimage <- function(imageobj) {
    require(RProtoBuf)
    require(EBImage)
    img <- readImage(imageobj)
    nf <- numberOfFrames(img)
    print(nf)
    return(nf)
}

谢谢。

【问题讨论】:

  • 你想用 R 中的图像做什么?你的myimagefunc 是什么样的?
  • 您好 Jeroen,感谢您的回复!我想使用 Bioconductor EBImage 运行一些图像处理。我希望能够将图像传递给 EBImage readImage() 函数。然后使用 e1071 对图像进行一些分析,并将结果返回给用户。让我把函数贴在主帖上。
  • 我应该将图像上传到 opencpu 服务器中的 tmp 密钥会话,然后让函数从那里读取文件吗?

标签: r opencpu


【解决方案1】:

您可以使用常规的多部分帖子上传文件。试试这个:

curl -v http://server:port/ocpu/library/mylibrary/R/myimagefunc -F "imageobj=@yourfile.png"

当 POST 上传文件时,opencpu 服务器会将文件复制到工作目录,并将文件名作为参数传递给您的函数调用。所以在这种情况下它会执行:

myimagefunc(imageobj = "yourfile.png")

【讨论】:

  • 嗨,Jeroen,它成功了! :-) 一如既往,你太棒了!!谢谢。
  • 您好 Jeroen,除了发送文件之外,是否可以随文件一起发送其他数据?例如:说“类型”,一个以某种方式描述文件的字符串。 R 代码将是 aboutimage
  • 是的,当然,只需在您的 http 请求中添加更多参数即可。如果是字符串,请确保添加引号,例如:-F imageobj=@yourfile.png&amp;type='somestring'
  • 谢谢杰罗恩!没想到:-)!所以它可能是一个 json 字符串,我应该确保我用 \ 转义 "
  • 是的,它可以是任何东西。你只需要在终端中转义,使用/ocpu/test 页面更容易测试。
猜你喜欢
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多