Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 传递图像和原始数据之间有区别吗_Python_Image_Numpy_Image Processing_Computer Vision - Fatal编程技术网

Python 传递图像和原始数据之间有区别吗

Python 传递图像和原始数据之间有区别吗,python,image,numpy,image-processing,computer-vision,Python,Image,Numpy,Image Processing,Computer Vision,假设我有一些图像,我想传递给我的算法。我在Python中遇到了这个函数,它的描述很清楚 但是,我不清楚如果我将图像作为原始数据而不是原始数组形式传递,会有什么不同。例如,是否有人只需要传递原始数据的应用程序 谢谢。tobytes()适用于需要pythonbytes对象的情况-可能需要将原始数据写入文件,或通过TCP套接字发送。文件和套接字只知道一系列字节 或者你想pickle你的数据,但是你读取数据的计算机没有numpy 它还可以方便地检查float或int对象的内存表示: >>&

假设我有一些图像,我想传递给我的算法。我在Python中遇到了这个函数,它的描述很清楚

但是,我不清楚如果我将图像作为原始数据而不是原始数组形式传递,会有什么不同。例如,是否有人只需要传递原始数据的应用程序

谢谢。

tobytes()
适用于需要python
bytes
对象的情况-可能需要将原始数据写入文件,或通过TCP套接字发送。文件和套接字只知道一系列字节

或者你想
pickle
你的数据,但是你读取数据的计算机没有numpy


它还可以方便地检查
float
int
对象的内存表示:

>>> np.array(1.0).bytes()
b'\x00\x00\x00\x00\x00\x00\xf0?'
但可以说这样做更好:

>>> np.array(1.0).view((np.uint8, 8)) 
array([  0,   0,   0,   0,   0,   0, 240,  63], dtype=uint8)

传递原始数据意味着您不再知道图像大小,只知道其像素占用的字节数。是1024x800图像还是1600x512图像

您还丢失了类型信息:除非图像最初具有8位像素值,否则每个像素将被“分割”为多个字节(例如,浮点值为4个字节)

也就是说,将原始字节传递给函数是个坏主意。您必须定义函数来对数据(例如,8位方形图像)进行假设,这是您无法测试的。还有什么好处呢

然而,将原始数据推入压缩算法(例如zip)将图像数据保存到文件中可能会很有趣。将图像信息写入文件(大小、数据类型),然后写入压缩的原始字节流。但所有这些都发生在一个函数中,您不会将原始字节传递给该函数