Асинхронные операции в очереди с QtConcurrent мешают освобождению QImageC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Асинхронные операции в очереди с QtConcurrent мешают освобождению QImage

Сообщение Anonymous »

Я пишу приложение для обработки изображений на Qt6.5.3. Есть производитель (камера), который продолжает захватывать изображения, и потребитель, который выполняет обнаружение захваченных изображений. Поскольку обнаружение может быть довольно медленным, я использую многопоточность, чтобы ускорить весь конвейер. Мой код можно резюмировать так:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include 

class Producer : public QObject {
Q_OBJECT

public:
Producer(QObject *parent = nullptr) : QObject(parent) {}

public slots:
void produce() {
constexpr auto count = 1000;
for (int i = 0; i < count; ++i) {
QImage img(2448, 2048, QImage::Format_Grayscale8);
img.fill(0);
emit imageReady(img);
}
}

signals:
void imageReady(QImage image);
};

class Consumer : public QObject {
Q_OBJECT

public:
Consumer(QObject *parent = nullptr) : QObject(parent) {}
int consumedCount() const { return count_; }

public slots:
void onImageReady(QImage image) {
QFuture future = QtConcurrent::run([=] {
QImage copy = image.copy(); // Make a deep copy first
QThread::msleep(200);       // Mock detection on the copy
qDebug() 

Подробнее здесь: [url]https://stackoverflow.com/questions/78242705/queued-async-operations-with-qtconcurrent-interfere-qimage-from-freed[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • QPDF Render в QImage дает мне прозрачный вывод QImage
    Anonymous » » в форуме C++
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Почему этот std::weak_ptr, очевидно, препятствует освобождению памяти и как я могу обнаружить эту ошибку?
    Anonymous » » в форуме C++
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как вызвать функцию с аргументами qtconcurrent [дублировать]
    Anonymous » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как сообщить о ProgressText из функции qtconcurrent :: run (или аналогичная) с qfuturewatcher?
    Anonymous » » в форуме C++
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как заставить функции, имеющие асинхронные операции, вызываться синхронно?
    Anonymous » » в форуме Jquery
    0 Ответы
    77 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»