如何从字节数组在python中生成RGB图像?

时间:2019-10-10 15:44:57

标签: python android sockets opencv

我正在做一个客户端/服务器应用程序。客户端是Android设备,服务器是我的运行python的PC。 在Android设备上,我预览了摄像头,然后以这种方式将其转换为字节数组(使用cameraX和分析用例):

override fun analyze(image: ImageProxy?, rotationDegrees: Int) {

    val buffer = image?.planes?.get(0)?.buffer
    // Extract image data from callback object
    val data = buffer?.toByteArray()
    // Convert the data into an array of pixel values
    // I commented this line, but I can use pixel value if you think is better
    //val pixels = data?.map { it.toInt() and 0xFF }
    Sender(mContext, mBufferedOutputStrem, mBufferedReader).execute(data)

}
private fun ByteBuffer.toByteArray(): ByteArray {
    rewind()    // Rewind the buffer to zero
    val data = ByteArray(remaining())
    get(data)   // Copy the buffer into a byte array
    return data // Return the byte array
}

然后,使用Sender类,将包含图像的字节数组发送到服务器。

override fun doInBackground(vararg p0: ByteArray): String {
    return try {

        mBufferedOutputStream.write(p0[0])
        mBufferedOutputStream.flush()
        ..........

在我的python服务器上,我用以下行读取缓冲区:

buf = conn.recv(4096)

因此,buf是字节数组。如何将其转换为图像并将其保存到磁盘?我也想先用openCv显示图像。 我该如何实现? ps。代替conn.recv(4096),我应该传递另一个值而不是4096吗?如果图像小于4096字节,我会遇到任何问题吗?

1 个答案:

答案 0 :(得分:0)

解决方案代码:

Knpv\\