我正在开发一个应用程序,可以从网络摄像头流中进行面部识别.我得到了画布的base64编码数据uri,并希望用它来做这样的事情:
cv2.imshow('image',img)
Run Code Online (Sandbox Code Playgroud)
数据URI看起来像这样:
data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7
Run Code Online (Sandbox Code Playgroud)
所以,为了清楚起见,我已经显示了图像的样子,因此base64字符串没有被破坏.
<img src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7">Run Code Online (Sandbox Code Playgroud)
在官方文档说,是imread接受作为参数的文件路径.从这个 SO答案,如果我这样做:
import base64
imgdata = base64.b64decode(imgstring) #I use imgdata as this variable itself in references below
filename = 'some_image.jpg'
with open(filename, 'wb') as f:
f.write(imgdata)
Run Code Online (Sandbox Code Playgroud)
上面的代码片段可以正常工作,并且可以正确生成图像文件.但是,我不认为这么多文件IO操作是可行的,因为我会为流的每一帧执行此操作.我希望能够将图像直接读入内存中创建img对象.
我尝试了两种似乎适用于某些人的解决方案.
使用PIL 参考:
pilImage = Image.open(StringIO(imgdata))
npImage = np.array(pilImage)
matImage = cv.fromarray(npImage)
Run Code Online (Sandbox Code Playgroud)
我cv没有定义,因为我安装了openCV3,我可以将其作为cv2模块使用.我试过img = cv2.imdecode(npImage,0),这什么都没有.
从解码的字符串中获取字节并将其转换为numpy数组
file_bytes = numpy.asarray(bytearray(imgdata), dtype=numpy.uint8)
img = cv2.imdecode(file_bytes, 0) #Here as well I get returned nothing
Run Code Online (Sandbox Code Playgroud)文档没有真正提到 …
我有一个构建工具,它创建一个注入格式字符串的versions.json文件json.
最初我只想通过回声注入json,如下所示.
json = {"commit_id": "b8f2b8b", "environment": "test", "tags_at_commit": "sometags", "project": "someproject", "current_date": "09/10/2014", "version": "someversion"}
echo -e json > versions.jso
Run Code Online (Sandbox Code Playgroud)
然而echo似乎逃脱了所有的引号,所以我的文件最终会像这样:
{commit_id: b8f2b8b, environment: test, tags_at_commit: somereleasetags, project: someproject, current_date: 09/10/2014, version: someproject}
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这不是有效的JSON.
我有一个2d字符数组的形式arr[][].我需要在结尾添加一个字符,有时添加到此数组中第i行或第j行的开头.这是代码片段:
arr[j] = strcat(arr[j],")");
arr[i] = strcat("(",arr[i]);
Run Code Online (Sandbox Code Playgroud)
当我编译代码时,我得到错误:赋值中的不兼容类型.现在我假设arr[j]并且arr[i]是字符串.我哪里错了?换句话说,在字符串的开头追加或添加字符的最佳做法是什么?