将图像转换为十进制值 [Python]
convert an image to a decimal value [Python]
我将 opencv 与 python 一起使用,我想将图像转换为十进制值以将其存储在文本文档中。
我尝试使用 b64encode,但它 returns str 或字符串值,但我想要一个十进制值。
提前感谢您的帮助:)
你问的是一个非常幼稚的想法(抱歉)并且行不通。
首先,一张 50x50 的二进制图像已经有 2500 位。一张 RGB 图像需要 60000 位。标准的浮点表示(32 或 64 位)是不可能的,您需要一些 BigNum 表示。
但是,更糟糕的是,如果目标是比较图像,像素的权重将大相径庭,而数值差异将使您无法很好地衡量差异。
你最好看看所谓的相似度分数
我仍然不明白为什么要将图像转换为十进制值。尽管如此,还是有一种天真的方法。
如您提供的代码中所述,首先获取imcode
:
import cv2
import base64
image = cv2.imread(path + 'date.jpg')
(tmp,buffer) = cv2.imencode('.jpg', image)
imcode = base64.b64encode(buffer)
然后就可以得到imcode
中每个字符的ASCII值,使用:
ascii_value = [ord(c) for c in imcode]
现在 ascii_value
是一个整数列表,您可以将其转换为十进制值。
我建议你也看看 THIS LINK
我将 opencv 与 python 一起使用,我想将图像转换为十进制值以将其存储在文本文档中。
我尝试使用 b64encode,但它 returns str 或字符串值,但我想要一个十进制值。
提前感谢您的帮助:)
你问的是一个非常幼稚的想法(抱歉)并且行不通。
首先,一张 50x50 的二进制图像已经有 2500 位。一张 RGB 图像需要 60000 位。标准的浮点表示(32 或 64 位)是不可能的,您需要一些 BigNum 表示。
但是,更糟糕的是,如果目标是比较图像,像素的权重将大相径庭,而数值差异将使您无法很好地衡量差异。
你最好看看所谓的相似度分数
我仍然不明白为什么要将图像转换为十进制值。尽管如此,还是有一种天真的方法。
如您提供的代码中所述,首先获取imcode
:
import cv2
import base64
image = cv2.imread(path + 'date.jpg')
(tmp,buffer) = cv2.imencode('.jpg', image)
imcode = base64.b64encode(buffer)
然后就可以得到imcode
中每个字符的ASCII值,使用:
ascii_value = [ord(c) for c in imcode]
现在 ascii_value
是一个整数列表,您可以将其转换为十进制值。
我建议你也看看 THIS LINK