跳到內容
  • 版面
  • 最新
  • 標籤
  • 熱門
  • 使用者
  • 群組
  • 搜尋
  • Get Qt Extensions
  • Unsolved
Collapse
品牌標誌
  1. 首頁
  2. Qt Development
  3. QML and Qt Quick
  4. After convertion QVideoFrame to QImage, the QImage is zoomed and streched
Forum Updated to NodeBB v4.3 + New Features

After convertion QVideoFrame to QImage, the QImage is zoomed and streched

已排程 已置頂 已鎖定 已移動 Unsolved QML and Qt Quick
24 貼文 5 Posters 3.7k 瀏覽 2 Watching
  • 從舊到新
  • 從新到舊
  • 最多點贊
回覆
  • 在新貼文中回覆
登入後回覆
此主題已被刪除。只有擁有主題管理權限的使用者可以查看。
  • SGaistS 離線
    SGaistS 離線
    SGaist
    Lifetime Qt Champion
    寫於 最後由 編輯
    #11

    Hi,

    To add to @GrecKo, YUYV is not directly mappable to an indexed image format.

    What exactly are you trying to achieve ?

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    fcarneyF M 2 條回覆 最後回覆
    0
    • SGaistS SGaist

      Hi,

      To add to @GrecKo, YUYV is not directly mappable to an indexed image format.

      What exactly are you trying to achieve ?

      fcarneyF 離線
      fcarneyF 離線
      fcarney
      寫於 最後由 編輯
      #12

      @SGaist This talks about converting YUV to RGB. Is this the same as UYUV?

      C++ is a perfectly valid school of magic.

      1 條回覆 最後回覆
      0
      • SGaistS 離線
        SGaistS 離線
        SGaist
        Lifetime Qt Champion
        寫於 最後由 編輯
        #13

        YUV is a color space as is RGB, YUYV is one of the many possible ways to store YUV data like you have RGB, BGR, etc.

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        M 1 條回覆 最後回覆
        0
        • SGaistS SGaist

          Hi,

          To add to @GrecKo, YUYV is not directly mappable to an indexed image format.

          What exactly are you trying to achieve ?

          M 離線
          M 離線
          Melle_87
          寫於 最後由 編輯
          #14

          @SGaist: I want to detect barcodes. Therefore I use ZBar and QZXing.
          For both I need a data of a QImage. That is the reason why I have to convert the QVideoFrame to QImage.

          GrecKoG 1 條回覆 最後回覆
          0
          • SGaistS SGaist

            YUV is a color space as is RGB, YUYV is one of the many possible ways to store YUV data like you have RGB, BGR, etc.

            M 離線
            M 離線
            Melle_87
            寫於 最後由 編輯
            #15

            @SGaist: But what could be the explanation that everything was fine on Raspberry Pi 3 with Raspbian Stretch and now I have problems on Raspberry Pi 4 with Raspbian Buster?

            GrecKoG 1 條回覆 最後回覆
            0
            • M Melle_87

              @SGaist: But what could be the explanation that everything was fine on Raspberry Pi 3 with Raspbian Stretch and now I have problems on Raspberry Pi 4 with Raspbian Buster?

              GrecKoG 離線
              GrecKoG 離線
              GrecKo
              Qt Champions 2018
              寫於 最後由 編輯
              #16

              @Melle_87 said in After convertion QVideoFrame to QImage, the QImage is zoomed and streched:

              @SGaist: But what could be the explanation that everything was fine on Raspberry Pi 3 with Raspbian Stretch and now I have problems on Raspberry Pi 4 with Raspbian Buster?

              My guess is that the Pi 3 was providing frames in a different format.

              1 條回覆 最後回覆
              0
              • M Melle_87

                @SGaist: I want to detect barcodes. Therefore I use ZBar and QZXing.
                For both I need a data of a QImage. That is the reason why I have to convert the QVideoFrame to QImage.

                GrecKoG 離線
                GrecKoG 離線
                GrecKo
                Qt Champions 2018
                寫於 最後由 GrecKo 編輯
                #17

                @Melle_87 said in After convertion QVideoFrame to QImage, the QImage is zoomed and streched:

                @SGaist: I want to detect barcodes. Therefore I use ZBar and QZXing.
                For both I need a data of a QImage. That is the reason why I have to convert the QVideoFrame to QImage.

                QZXing is supposed to handle YUYV fine in its video filters : https://github.com/ftylitak/qzxing/blob/master/src/QZXingFilter.cpp#L325

                M 1 條回覆 最後回覆
                3
                • GrecKoG GrecKo

                  @Melle_87 said in After convertion QVideoFrame to QImage, the QImage is zoomed and streched:

                  @SGaist: I want to detect barcodes. Therefore I use ZBar and QZXing.
                  For both I need a data of a QImage. That is the reason why I have to convert the QVideoFrame to QImage.

                  QZXing is supposed to handle YUYV fine in its video filters : https://github.com/ftylitak/qzxing/blob/master/src/QZXingFilter.cpp#L325

                  M 離線
                  M 離線
                  Melle_87
                  寫於 最後由 編輯
                  #18

                  @GrecKo: Thank for the link. I tried to register QZXingFilter in main.cpp:

                  qmlRegisterType<QZXingFilter>("MY.QZXingFilter", 1, 0, "MyQZXingFilter");
                  

                  Then I importet it in my qml file, instatiated it and assigned to my VideoOutput:

                  import MY.QZXingFilter 1.0
                  
                  MyQZXingFilter {
                      id: myBarcodeFilter
                  }
                  
                  My_Camera {
                      id: camera
                  }
                     
                  VideoOutput {
                      id: vid
                      source: camera
                      filters: [ myBarcodeFilter ]   
                  }
                  

                  But now I get some errors.

                  /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o: in function `int qmlRegisterType<QZXingFilter>(char const*, int, int, char const*)':
                  /home/m/Builds/build_PY-Raspi_Buster-Debug/../../../x/workspace/gateway-setup/qt-for-raspi4-root-buster-pi3-vc4-tc5/qt5pi/include/QtQml/qqml.h:311: undefined reference to `QZXingFilter::staticMetaObject'
                  /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o: in function `QQmlPrivate::QQmlElement<QZXingFilter>::QQmlElement()':
                  /home/m/Builds/build_PY-Raspi_Buster-Debug/../../../x/workspace/gateway-setup/qt-for-raspi4-root-buster-pi3-vc4-tc5/qt5pi/include/QtQml/qqmlprivate.h:103: undefined reference to `QZXingFilter::QZXingFilter(QObject*)'
                  /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o: in function `QtPrivate::MetaObjectForType<QZXingFilter*, void>::value()':
                  /home/m/Builds/build_PY-Raspi_Buster-Debug/../../../x/workspace/gateway-setup/qt-for-raspi4-root-buster-pi3-vc4-tc5/qt5pi/include/QtCore/qmetatype.h:1476: undefined reference to `QZXingFilter::staticMetaObject'
                  /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o: in function `QMetaTypeIdQObject<QZXingFilter*, 8>::qt_metatype_id()':
                  /home/m/Builds/build_PY-Raspi_Buster-Debug/../../../x/workspace/gateway-setup/qt-for-raspi4-root-buster-pi3-vc4-tc5/qt5pi/include/QtCore/qmetatype.h:1841: undefined reference to `QZXingFilter::staticMetaObject'
                  /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE[_ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE]+0x8): undefined reference to `QZXingFilter::metaObject() const'
                  /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE[_ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE]+0xc): undefined reference to `QZXingFilter::qt_metacast(char const*)'
                  /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE[_ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE]+0x10): undefined reference to `QZXingFilter::qt_metacall(QMetaObject::Call, int, void**)'
                  /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE[_ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE]+0x38): undefined reference to `QZXingFilter::createFilterRunnable()'
                  /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o:(.data.rel.ro._ZTIN11QQmlPrivate11QQmlElementI12QZXingFilterEE[_ZTIN11QQmlPrivate11QQmlElementI12QZXingFilterEE]+0x8): undefined reference to `typeinfo for QZXingFilter'
                  /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o: in function `QQmlPrivate::QQmlElement<QZXingFilter>::~QQmlElement()':
                  /home/m/Builds/build_PY-Raspi_Buster-Debug/../../../x/workspace/gateway-setup/qt-for-raspi4-root-buster-pi3-vc4-tc5/qt5pi/include/QtQml/qqmlprivate.h:108: undefined reference to `QZXingFilter::~QZXingFilter()'
                  

                  Do you know what I am doing wrong?

                  jsulmJ 1 條回覆 最後回覆
                  0
                  • M Melle_87

                    @GrecKo: Thank for the link. I tried to register QZXingFilter in main.cpp:

                    qmlRegisterType<QZXingFilter>("MY.QZXingFilter", 1, 0, "MyQZXingFilter");
                    

                    Then I importet it in my qml file, instatiated it and assigned to my VideoOutput:

                    import MY.QZXingFilter 1.0
                    
                    MyQZXingFilter {
                        id: myBarcodeFilter
                    }
                    
                    My_Camera {
                        id: camera
                    }
                       
                    VideoOutput {
                        id: vid
                        source: camera
                        filters: [ myBarcodeFilter ]   
                    }
                    

                    But now I get some errors.

                    /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o: in function `int qmlRegisterType<QZXingFilter>(char const*, int, int, char const*)':
                    /home/m/Builds/build_PY-Raspi_Buster-Debug/../../../x/workspace/gateway-setup/qt-for-raspi4-root-buster-pi3-vc4-tc5/qt5pi/include/QtQml/qqml.h:311: undefined reference to `QZXingFilter::staticMetaObject'
                    /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o: in function `QQmlPrivate::QQmlElement<QZXingFilter>::QQmlElement()':
                    /home/m/Builds/build_PY-Raspi_Buster-Debug/../../../x/workspace/gateway-setup/qt-for-raspi4-root-buster-pi3-vc4-tc5/qt5pi/include/QtQml/qqmlprivate.h:103: undefined reference to `QZXingFilter::QZXingFilter(QObject*)'
                    /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o: in function `QtPrivate::MetaObjectForType<QZXingFilter*, void>::value()':
                    /home/m/Builds/build_PY-Raspi_Buster-Debug/../../../x/workspace/gateway-setup/qt-for-raspi4-root-buster-pi3-vc4-tc5/qt5pi/include/QtCore/qmetatype.h:1476: undefined reference to `QZXingFilter::staticMetaObject'
                    /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o: in function `QMetaTypeIdQObject<QZXingFilter*, 8>::qt_metatype_id()':
                    /home/m/Builds/build_PY-Raspi_Buster-Debug/../../../x/workspace/gateway-setup/qt-for-raspi4-root-buster-pi3-vc4-tc5/qt5pi/include/QtCore/qmetatype.h:1841: undefined reference to `QZXingFilter::staticMetaObject'
                    /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE[_ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE]+0x8): undefined reference to `QZXingFilter::metaObject() const'
                    /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE[_ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE]+0xc): undefined reference to `QZXingFilter::qt_metacast(char const*)'
                    /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE[_ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE]+0x10): undefined reference to `QZXingFilter::qt_metacall(QMetaObject::Call, int, void**)'
                    /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o:(.data.rel.ro._ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE[_ZTVN11QQmlPrivate11QQmlElementI12QZXingFilterEE]+0x38): undefined reference to `QZXingFilter::createFilterRunnable()'
                    /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o:(.data.rel.ro._ZTIN11QQmlPrivate11QQmlElementI12QZXingFilterEE[_ZTIN11QQmlPrivate11QQmlElementI12QZXingFilterEE]+0x8): undefined reference to `typeinfo for QZXingFilter'
                    /opt/raspi-tools-8.3.0/lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: main.o: in function `QQmlPrivate::QQmlElement<QZXingFilter>::~QQmlElement()':
                    /home/m/Builds/build_PY-Raspi_Buster-Debug/../../../x/workspace/gateway-setup/qt-for-raspi4-root-buster-pi3-vc4-tc5/qt5pi/include/QtQml/qqmlprivate.h:108: undefined reference to `QZXingFilter::~QZXingFilter()'
                    

                    Do you know what I am doing wrong?

                    jsulmJ 離線
                    jsulmJ 離線
                    jsulm
                    Lifetime Qt Champion
                    寫於 最後由 編輯
                    #19

                    @Melle_87 said in After convertion QVideoFrame to QImage, the QImage is zoomed and streched:

                    MyQZXingFilter

                    Is it derived from QObject?

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    M 1 條回覆 最後回覆
                    0
                    • jsulmJ jsulm

                      @Melle_87 said in After convertion QVideoFrame to QImage, the QImage is zoomed and streched:

                      MyQZXingFilter

                      Is it derived from QObject?

                      M 離線
                      M 離線
                      Melle_87
                      寫於 最後由 編輯
                      #20

                      @jsulm: It is derived from QAbstractVideoFilter.

                      jsulmJ 1 條回覆 最後回覆
                      0
                      • M Melle_87

                        @jsulm: It is derived from QAbstractVideoFilter.

                        jsulmJ 離線
                        jsulmJ 離線
                        jsulm
                        Lifetime Qt Champion
                        寫於 最後由 jsulm 編輯
                        #21

                        @Melle_87 Then I guess you do not build/link moc_*.cpp file for MyQZXingFilter

                        undefined reference to `QZXingFilter::QZXingFilter(QObject*)' - actually you seem to not link QZXingFilter at all

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        1 條回覆 最後回覆
                        0
                        • GrecKoG 離線
                          GrecKoG 離線
                          GrecKo
                          Qt Champions 2018
                          寫於 最後由 編輯
                          #22

                          How did you add QZXing to your project?
                          https://github.com/ftylitak/qzxing#howToInclude has instructions on how to do it

                          M 1 條回覆 最後回覆
                          1
                          • GrecKoG GrecKo

                            How did you add QZXing to your project?
                            https://github.com/ftylitak/qzxing#howToInclude has instructions on how to do it

                            M 離線
                            M 離線
                            Melle_87
                            寫於 最後由 編輯
                            #23

                            @GrecKo: Okay. Now I am able to use the QZXingFilter in VideoOutput.
                            But the conversion from QVideoFrame to QImage is not successful.
                            QZXingFilter says:

                            QZXingFilterRunnable error: Cant create image file to process.
                            Maybe it was a format conversion problem? 
                            VideoFrame format:  Format_YUYV
                            Image corresponding format:  QImage::Format_Invalid
                            

                            What should I do now???

                            M 1 條回覆 最後回覆
                            0
                            • M Melle_87

                              @GrecKo: Okay. Now I am able to use the QZXingFilter in VideoOutput.
                              But the conversion from QVideoFrame to QImage is not successful.
                              QZXingFilter says:

                              QZXingFilterRunnable error: Cant create image file to process.
                              Maybe it was a format conversion problem? 
                              VideoFrame format:  Format_YUYV
                              Image corresponding format:  QImage::Format_Invalid
                              

                              What should I do now???

                              M 離線
                              M 離線
                              Melle_87
                              寫於 最後由 編輯
                              #24

                              It was my fault. I pulled the latest version of QZXing. Now the conversion from QVideoFrame to QImage is working.

                              1 條回覆 最後回覆
                              0

                              • 登入

                              • Login or register to search.
                              • 第一個貼文
                                最後的貼文
                              0
                              • 版面
                              • 最新
                              • 標籤
                              • 熱門
                              • 使用者
                              • 群組
                              • 搜尋
                              • Get Qt Extensions
                              • Unsolved