LINUX.ORG.RU

Ответ на: комментарий от d00fy

Как только не запускал, приложение работает без ошибок, должно открыться окно, а оно не открываеться. Думал проблема в «apt install libopencv-dev python3-opencv», установил, но, окно попрежнему не появляется. Google(-ил), но там решения, не нашёл.

lis777sergei
() автор топика
Ответ на: комментарий от ymn

server.py

[code]

import cv2 import socket import pickle import struct

Создаем сокет сервера

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

Привязываем сокет к адресу и порту

server_socket.bind(('', 9000))

Слушаем входящие подключения

server_socket.listen(5)

print(«Сервер запущен и ожидает подключения клиента…»)

while True: # Принимаем подключение от клиента client_socket, addr = server_socket.accept()

print('Подключение от:', addr)

# Получаем видео с веб-камеры
video = cv2.VideoCapture(0)

while True:
    # Читаем кадр с веб-камеры
    ret, frame = video.read()

    # Преобразуем кадр в сериализованный байтовый объект
    data = pickle.dumps(frame)

    # Получаем размер сериализованного кадра
    message_size = struct.pack('L', len(data))

    # Отправляем размер кадра клиенту
    client_socket.sendall(message_size + data)

    # Отображаем видео на сервере
    cv2.imshow('Server', frame)
    cv2.waitKey(1)

# Закрываем подключение и освобождаем ресурсы
client_socket.close()
video.release()

[/code]

client.py

[code]

import cv2 import socket import pickle import struct

Создаем сокет клиента

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

Подключаемся к серверу

client_socket.connect((‘10.0.1.10’, 9000)) data = b"" payload_size = struct.calcsize(‘L’)

while True: # Получаем размер кадра от сервера while len(data) < payload_size: # Размер пакета может быть изменен packet = client_socket.recv(4 * 1024) if not packet: break

    data += packet

packed_msg_size = data[:payload_size]
data = data[payload_size:]
msg_size = struct.unpack('L', packed_msg_size)[0]

# Получаем сериализованный кадр от сервера
while len(data) < msg_size:
    # Размер пакета может быть изменен
    data += client_socket.recv(4 * 1024)

frame_data = data[:msg_size]
data = data[msg_size:]

# Восстанавливаем кадр из сериализованного байтового объекта
frame = pickle.loads(frame_data)

# Отображаем видео на клиенте
cv2.imshow('Client', frame)
cv2.waitKey(1)

[/code]

lis777sergei
() автор топика
Ответ на: комментарий от lis777sergei

Поведение соответствует написанному коду. В waitKey передано количество миллисекунд по истечению которых окно закрывается.

https://docs.opencv.org/4.x/d7/dfc/group__highgui.html#ga5628525ad33f52eab17feebcfba38bd7

Алсо этот раздел форума не подходит для подобных тем.

ymn ★★★★★
()
Последнее исправление: ymn (всего исправлений: 1)
Ответ на: комментарий от lis777sergei

А если просто запустить примерно такой скрипт, выкинув все лишнее (далее псевдокод):

import cv2

i = cv2.imread('path-to-file')
cv2.imshow('foo', i)
cv2.waitKey()

то тоже ничего не отрисовывается? Пакет opencv-contrib-python установлен?

Думал проблема в «apt install libopencv-dev python3-opencv», установил, но, окно попрежнему не появляется

Лучше, конечно, создать отдельное виртуальное окружение и ставить туда нужные пакеты через pip/conda.

ymn ★★★★★
()
18 октября 2023 г.

import cv2

image = cv2.imread('image.jpg')

if image is not None:
   cv2.imshow('Image', image) 
   cv2.waitKey(0) 
   cv2.destroyAllWindows() 
else: 
   print('Failed to load image')

Не открывается окно при запуске программы: cv2.imshow

lis777sergei
() автор топика
Последнее исправление: lis777sergei (всего исправлений: 2)