首页 > 解决方案 > 无法将字符串转换为浮点数(将图像文件读取为字节)

问题描述

我有一个二进制文件,其中包含 BGR8 中图像的编码。我想读取此文件,然后将其转换为 Python 中的 JPEG 编码。我有可以将 BGR8 编码转换为 JPEG 编码的代码,但是从文件中提取此信息时遇到问题。这是我的原始代码:

import cv2
import numpy as np

def convert(value):
    return bytes(cv2.imencode('.jpg',value)[1])

with open("myfile",'rb') as reader:
    value = reader.read()

print(type(value))
jpeg = convert(np.float32(value))
print("Converted")

我必须转换为 float32,因为 imencode 函数需要一个 UMat 图像。但是,在这一行中,我收到了错误:

<class 'bytes'>
ValueError: Could not convert string to float: b'<<3\x12\x12\t\x0b\x0e\x06\x0b\x0e\x06\x14\x12\x0f0.+974\x12\x10\r,,$<<4::2<<458.47-14,14,21,.-(01,\x1c\x1d\x18\x10\x13\r\n\r\x07\t\x0c\x06\x0b\x0e\x08\x11\x11\t\x14\x14\x0c01,UVQqm_^ZL%#\x1a\x18\x16\r\x14\x16\x12\x12\x14\x10\x15\x17\x13\x16\x18\x14\x14\x16\x12\x11\x13\x0f\x0c\x0f\t\x1a\x1d\x17951\x14\x10\x0c\x11\x11\x0e;;8DKEFMGGLF@E?CC@AA>??1\x08\n\x12\t\x08\x10\x07\x0c\x0f\x07\x0b\x0e\x06\n\x0e\x04\x08\x0c\x02\t\x0c\x06\t\x0c\x06\t\x0e\x08\x1c!\x1b=C:\r\x13\n\x10\x16\r\x08\x0e\x05\x00\x07\x01\x00\x07\x01\x00\x06\x02\x00\x05\x01\x00\x06\x00\x00\x07\x01\x00\x05\x003\x00\x00\x03\x00\x00\x03\x00\x00\x03\x00\x00\x03\x00\x00\x03\x00\x00\x03\x00\x00\x04\x00\x00\x03\x00\x00\x02\x00\x00\x04\x00\x00\x04\x00\x00\x04\x00\x00\x05\x00\x00\x06\x01\x00\x07\x02\x00\x06\x01\x00\x05\x00\x00\x05\x00\x00\x07\x02\x00\x07\x02\x00\x07\x02\x00\x0b\x06\x01\x0c\x07\x06\x12\x0f\x0c\x18\x15=OMj|zo{xp|yq|wq|wq|wp{v\x10\x14\x10\x12\x16\x12\x19\x1d\x19`d`ilbDG= "\x1a\x15\x17\x0f\\_^psrHNEHNE\x10\x13\r\x11\x14\x0e+*%IHC\x1f YMcZMb[Mb[Nc\\Mb[Nc\\Mb[LbYKaXLaZLaZNb[MaZNb[MaZLbYKaXK`YLaZL`YL`YM_WL^VK_XJ^WL`YL`YP`XP`XM^XN_YN`XN`XN`XL^VO_WN^VL^VL^VO^XO^XO_WN^VL]WM^XL]WL]WM_WL^VL^VL^VH\\UH\\UK\\VK\\VH\\TH\\TJ\\TJ\\TG[SG[SE[RE[RFZRFZREYQEYQDZQDZQE[RE[REYQEYQEYQEYQCYNBXMBXOCYP'

PS:这里只有二进制文件的开头和结尾,我删除了大块以使问题可读。

我不知道这里发生了什么。我尝试了其他转换方法,但没有奏效。关于问题的任何想法?

标签: pythonimagefileopencvbinary

解决方案


推荐阅读