우선 무엇을하고 싶은가요? 내 라즈베리 파이에서 소켓으로 사진을 보내는 중입니다.소켓을 통해 numpy 배열 보내기
클라이언트 : 내가 사진을 업로드 한 다음 NumPy와 배열로 돌려 : 여기 어떻게됩니까
#!/usr/bin/python
import socket
import cv2
import numpy as np
import pickle
#Upload image
img = cv2.imread('/path/to/image', 0)
#Turn image into numpy-array
arr = np.asarray(img)
#Receiver ip
ip = "XXX.XXX.X.XXX"
#Set up socket and stuff
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#Loop through each array (5 for test)
for each in range(5):
#Encode each array
msg = pickle.dumps(arr[each][0])
#Send msg to ip with port
s.sendto(msg, (ip, 50000))
s.close()
. 그런 다음 배열 (각 목록)의 각 줄을 가져 와서 pickle로 "인코딩"하여 Socket을 통해 나중에 보내십시오. 모든 것은이 시점에서 잘 작동합니다.
서버 :
#!/usr/bin/python
import socket
import numpy as np
import cPickle as pickle
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("", 50000))
while True:
data, addr = s.recvfrom(4096)
conv = pickle.loads(data)
print conv
#print np.fromstring(conv,dtype=int)
s.close()
서버는 인코딩 된 데이터를 수신하고 (즉, I 달성하고자 무엇)을 NumPy와 배열로 다시 디코딩한다.
결국 배열을 이미지로 되돌려 야하지만이 부분에 대한 문제 때문에이 부분까지 도달하지 못했습니다.
나는 또한 배열을 문자열로 바꾸고, pickle로 인코딩 한 다음, 디코드 될 때 보낼 것이다. 이것은 numpy 배열이다. 그러나 그것은 잘 작동하지 않았습니다.
에 ValueError : 문자열의 크기는 그것에게 링크를 수 또는 내 실수를 지적, 내가 도움이 모든 종류의 감사하겠습니다
요소 크기의 배수 여야합니다. 며칠 동안이 작업을 해오 고 있으며이 문제에 도움이 될만한 것을 찾지 못했습니다.
미리 감사드립니다.
나도 몰라 -'FH = 개방 (... "RB")','sendto를 (fh.read ())' – furas
조금 더 설명해 주시겠습니까? sendto() 함수는 어떻게 작동합니까? 저는 실제로 소켓과 그 모든 것들에 대해 새로운 것입니다. 그 이유는 무엇입니까 ^^ –
신경 쓰지 마세요. 무슨 뜻인지는 이제 알지만 메시지가 너무 길어서 작동하지 않습니다. 데이터를 패키지로 분할하여 그렇게 보낼 수있는 방법이 있습니까? 'socket.error : [Errno 90] Message too long' –