gpt4 book ai didi

c - 如何使用curl从缓冲区上传图像?

转载 作者:行者123 更新时间:2023-11-30 17:44:18 24 4
gpt4 key购买 nike

我使用 Pierre Raufast blog 中描述的软件成功捕获帧。 。我尝试使用 IplImage 结构或原始缓冲区上传图像缓冲区(请查看此 source code 中的 video_buffer_callback 函数中的 bufferdstImage )。我正在使用 libcurl example 中的修改后的代码.

cvMatBuff = cvEncodeImage(".jpg", py, 0);
/* Fill in the file upload field from buffer */
curl_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "file",
CURLFORM_BUFFER, "nowy.jpg",
CURLFORM_BUFFERPTR, cvMatBuff,
CURLFORM_END);
curl = curl_easy_init();

不幸的是,执行后我的 Flask 应用程序出现了 500 错误。

192.168.0.16 - - [17/Nov/2013 21:02:22] "POST /faces HTTP/1.1" 500 -
----------------------------------------
Exception happened during processing of request from ('192.168.0.16', 48537)
Traceback (most recent call last):
File "/usr/lib/python2.7/SocketServer.py", line 295, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 321, in process_request
self.finish_request(request, client_address)
File "/usr/lib/python2.7/SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.7/SocketServer.py", line 649, in __init__
self.handle()
File "/home/usr/flask/lib/python2.7/site-packages/werkzeug/serving.py", line 200, in handle
rv = BaseHTTPRequestHandler.handle(self)
File "/usr/lib/python2.7/BaseHTTPServer.py", line 340, in handle
self.handle_one_request()
File "/home/usr/flask/lib/python2.7/site-packages/werkzeug/serving.py", line 235, in handle_one_request
return self.run_wsgi()
File "/home/usr/flask/lib/python2.7/site-packages/werkzeug/serving.py", line 194, in run_wsgi
traceback.plaintext)
File "/home/usr/flask/lib/python2.7/site-packages/werkzeug/utils.py", line 71, in __get__
value = self.func(obj)
File "/home/usr/flask/lib/python2.7/site-packages/werkzeug/debug/tbtools.py", line 359, in plaintext
return u'\n'.join(self.generate_plaintext_traceback())
File "/home/usr/flask/lib/python2.7/site-packages/werkzeug/debug/tbtools.py", line 353, in generate_plaintext_traceback
frame.function_name
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 17: ordinal not in range(128)

当我通过以下方式从文件上传图像时,我的服务器端代码工作正常:

curl -F "file=@./medium.jpg" http://localhost:5000/faces

最佳答案

此外,您必须使用 CURLFORM_BUFFERLENGTH, len 显式地将缓冲区长度传递给 libcurl。

此外,我建议您使用 CURLFORM_CONTENTTYPE, "image/jpeg"传递内容类型

最后,您还必须注意将正确缓冲区传递给 libcurl。

cvEncodeImage 返回 CV_8UC1 类型的单行矩阵。我不知道是否有与 cvEncodeImage 的内存对齐(?)。因此,您需要做的就是循环 cvMatBuff->data.ptr 数组,并将其逐行复制到大小为 cvMatBuff->rows*cvMatBuff 的预分配缓冲区中->cols 注意使用 cvMatBuff->step 跳到下一行(跨步)。

关于c - 如何使用curl从缓冲区上传图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com