gpt4 book ai didi

python - 通过套接字发送网络摄像头

转载 作者:行者123 更新时间:2023-12-03 11:55:34 25 4
gpt4 key购买 nike

我知道这个问题已经出现了好几次了,我都读完了(我希望...),但是在我的程序中,无论尝试什么,都无法通过套接字发送图像。

我在客户端使用Python 2.7在服务器端使用Python 3.4

这是代码:

服务器:

pygame.init()
pygame.camera.init()
cam = pygame.camera.Camera("/dev/video0",(640,480),'RGB')
cam.start()

host='192.168.0.11'
port=8080

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))

image = cam.get_raw()
data_64 = base64.b64encode(image)
data_utf = data_64.decode('utf-8')

print (data_utf)
print (len(data_utf))

s.sendall(data_utf)
s.close

客户:
host='192.168.0.11'
port=8080

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(1)
conn, addr = s.accept()

string = ''

while True:
d = conn.recv(640*480)

if not d:
break

else:
d = d.decode('UTF-8')
string += d

print (string)
print (len(string))

fh = open("imageToSave.jpeg", "wb")
fh.write(string)
fh.close()

最后,我尝试了不同的格式(.png,.gif等),但没有一个能显示出我喜欢的图片。程序创建了一个包含数据的图像文件,但是我无法打开它或看到图片。

根据打印结果和len(),两个字符串相等。长度是819200。因此,由于它是相同的字符串,因此传输是正确的。问题是如何从字符串中获取图片?

我的计划是将网络摄像头流输入到Tkinter gui中。

我也尝试过类似的东西
pygame.image.tostring(image,“RGB”)
在服务器端
pygame.image.fromstring(string,(640,480),“RGB”)
但是无论如何尝试,我总是会收到“ValueError:字符串长度不等于格式和分辨率大小”的信息。

我对Python很陌生,所以也许我做了一些复杂的事情。有人可以指出我正确的方向吗?几天来,我一直被困在这里。

最佳答案

好吧,我自己弄清楚了。
使用下面的代码,它可以工作。显然,我在以正确的方式格式化字符串时遇到了一些麻烦。

客户:

pygame.init()
pygame.camera.init()
cam = pygame.camera.Camera("/dev/video0",(300,300),'RGB')
cam.start()

image = cam.get_image()
print = cam.get_size()
img_str = pygame.image.tostring(img,"RGB")

host='192.168.0.11'
port=8080

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))




s.sendall(img_str)
s.close

主持人:
host='192.168.0.11'
port=8080


s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(1)
conn, addr = s.accept()

string = bytes('','UTF-8')


while True:

d = conn.recv(640*480)

if not d:
print ("break")
break

else:

string += d

pil_image = Image.fromstring("RGB",(352,288),string)
#(352,288) is the return of cam.get_size()

关于python - 通过套接字发送网络摄像头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30286425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com