Потоковое изображение с использованием QGraphicsView - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь отобразить изображения с камеры CameraLink в QGraphicsView. Я использую кольцевой буфер, который выполняет функции get () и set (), и два потока, которые потребляют или создают изображения в этом кольцевом буфере. Эта часть работает, потому что у меня уже была успешная трансляция с использованием QWidget. Я хочу использовать QGraphicsView, потому что я хочу рисовать поверх этих входящих изображений

У меня есть класс отображения, который повышается до QGraphicsView, каждый раз, когда создается изображение, из потока потребителя передается сигнал для следующей функции:

void display::drawImage(ImageBW* image)
{
    firstImage = image;
    QRect rect;
    rect.setHeight(1000);
    rect.setWidth(2000);

    QApplication::postEvent(this->viewport(),new QPaintEvent(rect));
}

Я переопределил painEvent класса QGraphicsview:

void display::paintEvent(QPaintEvent *event)
{
    if(firstImage)
        _drawImage();
    event->setAccepted(true);
}

и функция рисования:

void display::_drawImage()
{
    int w, h;
    if(img)
    {
        delete img;
        img = NULL;
    }
    w = firstImage->getSizeX();
    h = firstImage->getSizeY();
    unsigned char * udata = (unsigned char *)firstImage ->getData();
    img = new QImage(udata,w, h,QImage::Format_Grayscale8);

    pix_img = QPixmap::fromImage(*img);

    scene->clear();
    scene->addPixmap(pix_img);
    scene->setSceneRect(pix_img.rect());
    scene->update();
    update(); // I have tried here also setScene(scene)
}

В приведенном выше коде firstImage является переменной ImageBW *. ImageBW - это место, где хранятся данные изображения с камеры.

Я также пытался с помощью функции QGraphicsItem и addItem (), но у меня нет изображения. 'scene' инициализируется у производителя этого класса, а также 'setScene (scene);' команда есть. Программа зависает через некоторое время, так что, вероятно, это означает, что этот код создает стекопотока. Пожалуйста, я перепробовал все, что мог, любая помощь будет принята с благодарностью.

Заранее спасибо

...