我想在套接字上创建视频流,但是我无法将图像转换为字节数组。 为什么我不能将图像形式的相机转换为字节数组?
CHUNK=1024 lnF = 640*480*3
wvs = WebcamVideoStream(0).start()
while True: for x in range(1):
try:
frame = wvs.read()
cv2_im = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# cv2.imshow('frame',cv2_im)
# if cv2.waitKey(1) & 0xFF == ord('q'):
# break
frame = cv2.resize(frame, (640, 480))
# print("frame :", frame)
frame = np.array(frame, dtype = np.uint8).reshape(1, lnF)
# print("frame :",frame)
jpg = bytearray(frame)
# print("jpg_as_text", jpg_as_text)
# print("ACCEP")
except Exception as e:
print(e)
答案 0 :(得分:1)
cv2图像存储为numpy.ndarray。要获得numpy.ndarray的字节表示,您可以使用numpy.ndarray.tobytes方法来转换图像。在您的代码中,它看起来像这样:
jpg = frame.tobytes()
使用.tobytes方法时,字节的长度实际上要比pickle.dumps方法要小一些,并且要快得多。
答案 1 :(得分:0)
尝试一下:
import pickle
frame = wvs.read()
cv2_im = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
frame = cv2.resize(frame, (640, 480))
frame = np.array(frame, dtype = np.uint8).reshape(1, lnF)
# packing:
pickled = pickle.dumps(frame)
byte_array_pickle = str.encode(pickled)
和
#unpacking
unicode_pickle = incoming_data.decode()
original_image = pickle.loads(unicode_pickle)