在将OpenCV Mat图像投射到QImage时是否警告使用旧式转换?

时间:2019-07-13 08:19:46

标签: c++ image qt opencv qimage

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

    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); 

那是老式铸造的一部分

1 个答案:

答案 0 :(得分:1)

@VTT指出,“旧样式转换”表示“ C样式”转换。 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