我正在做一个客户端/服务器应用程序。客户端是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字节,我会遇到任何问题吗?
答案 0 :(得分:0)
解决方案代码:
Knpv\\