我正在将图像从python后端传输到c ++后端。我选择了Google protobuf,其结构如下:
message data {
optional string image = 1;
}
然后我使用Python读取图像并将其放入图像字段:
data = server_pb2.data()
data.image = (open(image_fn).read())
但是protobuf抱怨以下信息:
值错误:[十六进制数据]的类型为str,但不是7位ASCII编码。非ASCII字符串必须在添加之前转换为unicode对象。
我尝试了几种方法使数据unicode但没有成功。
也许以前有人遇到过这个问题?或者有更好的方法来传输图像数据吗?
谢谢!
答案 0 :(得分:1)
您应该使用bytes
作为.proto文件中的类型,而不是string
。
bytes
用于任意字节序列(例如图像)。 string
用于UTF-8或ASCII字符序列(例如文本)。