首页 > 解决方案 > 从 android studio 编码并在 python raspberry pi 中解码的图片

问题描述

我想将一些文本和图片从 Android 应用程序传送到 Raspberry Pi……我已经发送了文本消息并完美解码……但问题是解码图片……我认为我得到了正确的解码……

from socket import *
from time import ctime


ctrCmd = ['Up','Down']

HOST = ''
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST,PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)

while True:
    print ('Waiting for connection')
    tcpCliSock,addr = tcpSerSock.accept()
    print ('...connected from :', addr)
    try:
            while True:
                    data = ''
                    data = tcpCliSock.recv(BUFSIZE)
                    print(data)
                    data = str(data,encoding='utf-8')
                    if not data:
                            break
                    if data == ctrCmd[0]:
                            print ('Up')
                    if data == ctrCmd[1]:
                            print ('Down')
    except KeyboardInterrupt:
            break
tcpSerSock.close();

这是Android编码代码

imageUri = data.getData();
            final InputStream imageStream = 
getContentResolver().openInputStream(imageUri);
            final Bitmap selectedImage = 
BitmapFactory.decodeStream(imageStream);
            imageView.setImageURI(imageUri);

            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            selectedImage.compress(Bitmap.CompressFormat.JPEG, 0, bos);
            array = bos.toByteArray();

这些是 Android 编码和 python 解码代码图片,我正在分享我在发送文本和图片时收到的内容....感谢您的帮助,我很早就需要它....谢谢

我在 rpi 收到的结果图片

标签: androidpythonopencvraspberry-pi3

解决方案


data = ''
                    data = tcpCliSock.recv(BUFSIZE)
                    #data = str(data,encoding='utf-8')
                    nparr = 
np.fromstring(data.decode('utf-8'),np.uint8)
                    print(nparr)

应用这个我得到了一些数组显示在附图中 但是当我应用这条线

#img = cv2.imdecode(nparr, 
cv2.IMREAD_ANYCOLOR)

它给出了一些错误和无列表...请参见此处的附图


推荐阅读