Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Polish
  4. Wyświetlenie obrazu w GraphicView
Qt 6.11 is out! See what's new in the release blog

Wyświetlenie obrazu w GraphicView

Scheduled Pinned Locked Moved Polish
4 Posts 2 Posters 5.1k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    sim-ns
    wrote on last edited by
    #1

    Witam!

    Buduje aplikację która ma porównywać obrazy i pracować na pikselach załadowanych obrazów (porównywanie dwóch obrazów, wykrywanie krawędzi itp itd). Na głównym formie ma wyświtlać załadowany wcześniej obrazek. Do tego celu używam widgetu GraphicView i chce załadować obraz do niego za pomocą przycisku jednak coś jest nie tak i dlatego zdecydowałem się tu napisać. Może podpowiecie mi co robie źle lub poradzicie jak to zrobić. Oto mój kod który jest pod przyciskiem na formie:
    @ QString nazwaZdjecia1 = QFileDialog::getOpenFileName(this, tr("Otwórz plik"), "C:/", tr("Obrazy (*.jpg .png .bmp)"));
    QFile ladowanyPlik(nazwaZdjecia1);
    QString sciezka = ladowanyPlik.fileName();
    ui->lineEditZdjecie1->setText(nazwaZdjecia1);
    if(!sciezka.isEmpty()){
    QImage obraz(sciezka);
    if(obraz.isNull()){
    QMessageBox::information(this,"","Wystąpił błąd podczas wyświetlania obrazu! Spróbuj ponownie.");
    return;
    }
    QGraphicsScene
    scena = new QGraphicsScene();
    QGraphicsPixmapItem
    item = new QGraphicsPixmapItem(QPixmap::fromImage(obraz));
    scena->addItem(item);
    ui->graphicsViewZdjecie1->setScene(&scena);
    ui->graphicsViewZdjecie1->show();
    }
    QByteArray zawartoscPliku(ladowanyPlik.readAll());@

    Jestem jeszcze zielony jesli chodzi o poruszanie się w Qt (to jest mój pierwszy projekt w tym środowisku) dlatego każda pomoc będzie nioceniona. Kompilator zgłasza błąd z QGraphicPixmap że nie posiada on konstruktora (biblioteka załączona na początku przez #include) oraz że nie można go konwertować do QGraphicItem. Inna sprawa że muszę jakoś wydobyć piksele z załadowanego obrazu aby potem na nich operować i nie wiem czy samo załadowanie danych obrazu do tablicy bajtów wystarczy czy trzeba to jakoś inaczej wykonać. JEśli tak jest, to jak to zrobić?

    1 Reply Last reply
    0
    • S Offline
      S Offline
      sim-ns
      wrote on last edited by
      #2

      No to może tak. Co zrobić i jak aby poprawnie wyświetlać obraz w GraphicView, który jest ładowany z przycisku poprzez obiekt QFile. Czy powyższy kod powinien działać czy może podejście ze scenami i itemami jest błędne?

      Bardzo was prosze o pomoc bo póki co nie znalazłem niestety rozwiązania tego problemu :/

      1 Reply Last reply
      0
      • A Offline
        A Offline
        ariwez
        wrote on last edited by
        #3

        Twój kod u mnie się skompilował gdy na poczatku pliku dodałem:

        @#include <QGraphicsPixmapItem>
        @

        1 Reply Last reply
        0
        • S Offline
          S Offline
          sim-ns
          wrote on last edited by
          #4

          Troche udało mi si ę już pozmieniać ten kod i zdobyć wiedze na temat obiektu item, który niekoniecznie musi być używany (a już napewno nie jako wskaźnik) jeśli mamy do czynienia z najnowszym Qt w wersji 5.x dlatego iż w tej wersji pamięć przez niektóre funkcje jest inaczej adresowana. Też mnie to na początku zdziwiło no ale tak jest. W tej chwili mój kod wygląda tak:
          @ QGraphicsScene *scena = new QGraphicsScene(ui->graphicsViewZdjecie1);
          QPixmap mapaPikseli(nazwaZdjecia1);
          scena->addPixmap(mapaPikseli);
          ui->graphicsViewZdjecie1->setScene(scena);
          ui->graphicsViewZdjecie1->fitInView(scena->itemsBoundingRect(),Qt::KeepAspectRatio);
          ui->graphicsViewZdjecie1->show();@

          Z tego co udało mi się ustalić obiekt item, który wcześniej używałem aby działać na pixmapie jest zgodny ale wyłącznie w wersjach wcześniejszych niż Qt 5.x To tak dla potomności... :)

          Czy ktoś się orientuje czy i ewentualnie w jaki sposób można wyciągać i modyfikować piksel po pikselu z tej pixmapy czy trzeba to wrzucać do tablicy bajtowej i wyciągać z tego dopiero pojedyncze piksele oraz czy jest jakiś sposób na wstępne obcinanie i skalowanie obrazu np. aby usunąc nadmiar jakiegoś koloru w obrazie?

          1 Reply Last reply
          0

          • Login

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups
          • Search
          • Get Qt Extensions
          • Unsolved