小编Viv*_*han的帖子

使用OpenCv python库从内存中读取基本64位编码图像

我正在开发一个应用程序,可以从网络摄像头流中进行面部识别.我得到了画布的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对象.

我尝试了两种似乎适用于某些人的解决方案.

  1. 使用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),这什么都没有.

  2. 从解码的字符串中获取字节并将其转换为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)

文档没有真正提到 …

python base64 encoding opencv numpy

15
推荐指数
3
解决办法
2万
查看次数

echo json over命令行到文件中

我有一个构建工具,它创建一个注入格式字符串的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.

linux json cmd echo

6
推荐指数
1
解决办法
1万
查看次数

C语言中的strcat不兼容类型错误

我有一个2d字符数组的形式arr[][].我需要在结尾添加一个字符,有时添加到此数组中第i行或第j行的开头.这是代码片段:

 arr[j] = strcat(arr[j],")");
 arr[i] = strcat("(",arr[i]);
Run Code Online (Sandbox Code Playgroud)

当我编译代码时,我得到错误:赋值中的不兼容类型.现在我假设arr[j]并且arr[i]是字符串.我哪里错了?换句话说,在字符串的开头追加或添加字符的最佳做法是什么?

c string incompatibletypeerror strcat

2
推荐指数
1
解决办法
1537
查看次数

标签 统计

base64 ×1

c ×1

cmd ×1

echo ×1

encoding ×1

incompatibletypeerror ×1

json ×1

linux ×1

numpy ×1

opencv ×1

python ×1

strcat ×1

string ×1