Как преобразовать изображение в bytearray? - PullRequest
2 голосов
/ 22 января 2020

Я хочу создать видео на пару, но я не могу преобразовать изображение в байтовый массив. почему я не могу преобразовать изображение из камеры в 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)

Ответы [ 2 ]

1 голос
/ 23 января 2020

Изображение cv2 сохраняется как numpy .ndarray . Чтобы получить байтовое представление numpy .ndarray, вы можете просто использовать метод numpy .ndarray.tobytes для преобразования вашего изображения. В вашем коде это будет выглядеть примерно так:

jpg = frame.tobytes()

Длина байтов при использовании метода .tobytes на самом деле немного меньше, когда он на самом деле немного меньше, чем метод pickle.dumps и намного быстрее.

0 голосов
/ 22 января 2020

Попробуйте:

 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...