Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для DjonyCooper
10 / 7 / 4
Регистрация: 28.05.2021
Сообщений: 136

Поместить cv2 внутрь виджета

08.06.2023, 16:06. Показов 696. Ответов 2

Студворк — интернет-сервис помощи студентам
Доброго собственно вопрос в том, как заставить "двигаться" cv2 внутри виджета. При таком добавлении получаю статику, в виде первого кадра.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import cv2
from PyQt5.QtWidgets import QWidget, QApplication, QGridLayout, QLabel
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon, QPixmap, QImage
 
class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setMinimumSize(1000, 700)
        self.setWindowTitle('Test')
        self.grid = QGridLayout(self)
        self.grid.addWidget(self.label(), 0, 0)
        self.setLayout(self.grid)
 
    def label(self):
        self.video_label = QLabel()
        cap = cv2.VideoCapture(0)
        ret, frame = cap.read()
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        img = QImage(frame, frame.shape[1], frame.shape[0], QImage.Format_RGB888)
        pix = QPixmap.fromImage(img)
        self.video_label.setPixmap(pix)
 
        return self.video_label
 
if __name__ == ('__main__'):
    import sys
    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.06.2023, 16:06
Ответы с готовыми решениями:

Чтение URL адресса из окна виджета и открытие его браузером при нажатии кнопки виджета
#Как считать url со строки ввода в виджете что бы потом при нажатии кнопки виджета открыть этот url браузером. from tkinter...

Поместить внутрь php span
Как внутрь этого <?php the_archive_title( '<h1 class="archive-title">', '</h1>' ); поместить это <span...

Поместить внутрь фона картинку
Возникла задача поместить внутрь фона картинку как это можно осуществить чтобы картинка повторяла форму фона? <div...

2
5519 / 2872 / 571
Регистрация: 07.11.2019
Сообщений: 4,762
08.06.2023, 19:18
https://gist.github.com/docPhi... b617c7b8b1
1
 Аватар для DjonyCooper
10 / 7 / 4
Регистрация: 28.05.2021
Сообщений: 136
09.06.2023, 11:17  [ТС]
Да спасибо, я видел этот вариант решения, но мне не особо нравиться отрисовка виджета после загрузки основного окна.

Я бы хотел допилить решение, нашел на стороннем ресурсе вариант, но не понимаю как довести его до ума:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Внутри while цикла вам нужно снова преобразовать frame в QPixmap, аналогично тому, что вы сделали выше, а затем обновить ui:
 
cap = cv2.VideoCapture('video.mov')
 
while (cap.isOpened()):
    ret, frame = cap.read()
    if not ret:
        break
 
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    img = QImage(frame, frame.shape[1], frame.shape[0], QImage.Format_RGB888)
    pix = QPixmap.fromImage(img)
    pix = pix.scaled(600, 400, Qt.KeepAspectRatio, Qt.SmoothTransformation)
    self.ui.label_7.setPixmap(pix)    
 
    self.ui.frame = pix  # or img depending what `ui.frame` needs
 
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
 
cap.release()
В моем случае это получается что-то вроде:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    def label(self):
        video_label = QLabel()
        cap = cv2.VideoCapture(0)
 
        while cap.isOpened():
            ret, frame = cap.read()
            if ret:
                frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
                img = QImage(frame, frame.shape[1], frame.shape[0], QImage.Format_RGB888)
                pix = QPixmap.fromImage(img)
                pix = pix.scaled(self.width(), self.height())
                video_label.setPixmap(pix)
 
                if cv2.waitKey(1) & 0xFF == ord('q'):
                    break
            else:
                video_label.setText('Отсутствует видео сигнал...')
                break
 
        return video_label
Цикл работает, в условие if ret заходит, но приложение не отображается, не могу разобраться в том, что в ответе с использованием дизайнера значит self.ui.frame = pix # or img depending what `ui.frame` needs - я так понимаю там предлагается повторно отрисовывать основное окно. Не могу понять как спроецировать это решение под себя.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.06.2023, 11:17
Помогаю со студенческими работами здесь

Поместить прямоугольник внутрь окружности
Создать программу, которая проверяет, можно ли поместить заданный прямоугольник внутри заданной окружности. Использовать два класса –...

Поместить прямоугольник внутрь окружности
Создать программу, которая проверяет, можно ли поместить заданный прямоугольник внутри заданной окружности. Использовать два класса – класс...

Поместить капчу внутрь input
Человек сделал капчу посреди html кода и хочет, чтобы она была внутри инпута. Я уже не знаю, что с ней делатть.... Как ее поместить внутрь...

Получить заголовок изображения и поместить внутрь textarea
Всем привет, возникла такая проблема, имеется ссылка тег <a> и внутри неё изображение <img /> с атрибутом title = 'Изображение' и...

Поместить html-страницы внутрь исполняемого файла
Здравствуйте, на форме есть WebBrowser. Нужно было открыть локальные html файлы. Использовал такой код: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru