我想在socket上创建一个视频流,但我不能将图像转换为bytearray。为什么我不能将图像从相机转换为字节数组?
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)
发布于 2020-01-23 08:52:00
cv2图像存储为numpy.ndarray。要获得numpy.ndarray的字节表示,只需使用numpy.ndarray.tobytes方法转换图像即可。在你的代码中,它看起来像这样:
jpg = frame.tobytes()
使用.tobytes方法时,字节的长度实际上比使用pickle.dumps方法时要小一些,而且速度要快得多。
发布于 2020-01-22 20:33:24
试试这个:
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)
https://stackoverflow.com/questions/59867047
复制