@kidswong999
与问题相关的代码在这里:
#camera类:初始化相机,拍照
class camera:
def __init__(self):
# Reset sensor
sensor.reset()
# Set sensor settings
sensor.set_contrast(1)#设置对比度
sensor.set_brightness(1)#设置亮度
sensor.set_saturation(1)#设置饱和度
sensor.set_gainceiling(16)#设置相机图像增益上限
sensor.set_framesize(sensor.VGA)#设置帧大小
sensor.set_pixformat(sensor.RGB565)#设置像素模式
#sensor.skip_frames(time = 2000) # Wait for settings take effect.
def getImage(self):
frame = sensor.snapshot()
cframe = frame.compressed(quality=50)
#print(type(cframe))
return cframe
#clientSOCK:套接字客户端,发送图片
class clientSOCK:
def __init__(self,host,port):
self.host=host
self.port=port
self.sock=usocket.socket(usocket.AF_INET,usocket.SOCK_STREAM)
self.sock.connect((self.host,self.port))
print("连接成功")
def send(self,content,op):
#发送文本消息
if op==1:
self.sock.send(content)
self.sock.send("|*text*|")
a=b''
print("1")
recv=self.sock.recv(1024)
print("2")
#while recv:
#a+=recv
#recv=self.sock.recv(1024)
res=a.decode()
print("I have message:",res)
return res
#发送图片消息
if op==2:
self.sock.send(content)
self.sock.send("|*graph*|")
return
return
#循环:
while True:
#先建立TCP连接
cli=clientSock(serverIP,serverPort)
#初始化摄像模块
pho = camera()
#拍照
img = getImage()
#发送图片
cli.send(img,2)
做过的尝试:
1.调低图像帧数(试过QVGA,QQVGA,),调整compressed函数的参数(试过50,10)
仍然只能发送一次,就报MemoryError的错误,见题干截图
2.使用VGA彩色图,不压缩直接发送,
虽然能多次发送了,服务器收到的byte流经过解析无法得到JPEG图片,猜测不经压缩的图片不是常规JPEG格式。
希望得到的帮助:
如代码while循环所示,如何能多次拍摄,压缩彩色的图像?