将 OpenCV Mat 图像投射到 QImage 时警告使用旧式投射?

Warning use of old-style cast while casting OpenCV Mat image to QImage?

虽然我一直在将 OpenCV 与 QT 结合使用,但我看到了那个警告,我不知道它的新转换样式是什么。有人知道我可以申请吗?

    Mat normalImage;
    normalImage = imread("E:\tree.jpg", IMREAD_COLOR );
    cvtColor(normalImage, normalImage, COLOR_BGR2RGB);
    QImage imdisplay((uchar*)normalImage.data, normalImage.cols, 
    normalImage.rows, normalImage.step, QImage::Format_RGB888);
    ui->imageLabel1->setPixmap(QPixmap::fromImage(imdisplay));
QImage imdisplay((uchar*)normalImage.data, normalImage.cols, 
normalImage.rows, normalImage.step, QImage::Format_RGB888); 

这是旧式铸造的部分

正如@VTT 所指出的那样,"old-style cast" 表示 "C-style" 投射。 C++ 编译器更喜欢使用 C++ 强制转换:

  • static_cast
  • dynamic_cast
  • const_cast
  • reinterpret_cast

您的情况是由 (uchar*)normalImage.data 引起的。 但我想知道您是否需要任何转换,因为 Mat::data 被记录为 uchar *https://docs.opencv.org/2.4/modules/core/doc/basic_structures.html#mat