У меня есть функция streamCamera(*callback)
, где обратный вызов - void callback(Image)
, которую можно использовать для предварительного просмотра потока в любой структуре пользовательского интерфейса, которую мы хотим.
Мне удалось выполнить потоковую передачу с помощью этой функции в opencv imshow window
void callback(image)
{
cv::imshow("image", image);
waitKey(1);
}
, в то время как imshow является функцией stati c и может выполнять потоковую передачу.
Могу ли я сделать что-нибудь подобное с Qt?
То, что я пробовал,
У меня есть class MainWindow
, который наследует QMainWindow
, внутри класса я добавил QGraphicsPixmapItem pixImage
в пользовательский интерфейс с помощью ui->graphicsView->scene()->addItem(&pixImage);
, поскольку pixImage
недоступен для функции обратного вызова, потому что объект Mainwindow не является глобальным. Мне не удалось установить изображение в растровом изображении;
Итак, я закончил взлом, просто создал глобальный указатель QGraphicsPixmapItem *pixImagePtr
и прикрепил pixImage
перед запуском streamCamera(*callback)
и внутри обратного вызова Я использую pixImagePtr
для установки изображения GUI, а это сработало .
Но этот хак кажется неправильным способом, поэтому было бы полезно, если бы некоторые qt специалисты пролили на это некоторый свет.