关于拍照时内容溢出的问题
-
摄像头的设置如下:
当我在一个whileTrue 循环中拍照时,
代码:cframe = frame.compressed(quality=50)报错如下:
注意:
最开始我将quality设置为100,报错后根据提示,调小quality值为50,
不幸的是问题没有被解决。
我希望在不降低quality的条件下,连续拍照,请问有没有好的解决方案?
-
@yqw6 更新一个报错截图
-
如果涉及代码,需要报错提示与全部代码文本,请注意不要贴代码图片
-
其实在VGA彩色下,frame已经是一个压缩后的jpeg了,
我认为没必要再调用compressed函数。
-
@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循环所示,如何能多次拍摄,压缩彩色的图像?
-
你的代码不完整。我无法运行。