cv2.imshow () не обновляется - PullRequest
0 голосов
/ 05 января 2020

Я хочу передать тепловое изображение на python, но я получаю только одно изображение, которое не обновляется. Термодатчик перестает обновлять температуру. Когда я удаляю cv2.imshow, все снова работает нормально. Термодатчик снова печатает текущую температуру. Я перепробовал множество других опций, например plt.imshow(cv2.cvtColor(image, cv2.BGR2RGB)) plt.show() или то, что я прокомментировал ниже в своем коде, но, похоже, ничего не получалось. Смотри ниже мой код:

import socket
import pickle
import numpy as np
import cv2
from matplotlib import pyplot as plt

HEADERSIZE = 8355

host = ''
port = 1238

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

while True:

    full_msg = b''
    new_msg = True
    while True:
        msg = s.recv(8355)
        if new_msg:
            print(f"new message length: {msg[:HEADERSIZE]}")
            msglen = int(msg[:HEADERSIZE])
            new_msg = False

        full_msg += msg

        if len(full_msg) - HEADERSIZE == msglen:
            print("Full msg recvd")
            print(full_msg[HEADERSIZE:])

            d = pickle.loads(full_msg[HEADERSIZE:])
            print(d)

            image = np.array(d)
            image = cv2.resize(image, (300, 300))
            print(image)
            plt.imsave('color_img1.jpg', image)
            img = cv2.imread('color_img1.jpg', 1)

            #plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2HSV))
            #plt.show()
            #cv2.imshow('lmao', img)
            #cv2.waitKey(0)

            new_msg = True
            full_msg = b''

    print(full_msg)

1 Ответ

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

Вы должны установить входное значение waitKey, совместимое с частотой кадров вашего датчика. Например, если вы получаете новое изображение каждые 100 мс, вы должны ввести waitKey с вводом менее 100 мс:

cv2.imshow('lmao', img)
cv2.waitKey(10) # almost always 10 miliseconds is good enough for showing a good image
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...