当我一直在使用带有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);


那是老式铸造的一部分

最佳答案

正如@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

09-04 17:40