c++ - 将 OpenCV Mat 图像转换到 QImage 时警告使用旧式转换?

标签 c++ image qt opencv 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 所指出的,“旧式类型转换”是指“C 风格”类型转换。 C++ 编译器更喜欢使用 C++ 强制转换:

  • 静态转换
  • 动态转换
  • const_cast
  • 重新解释_cast

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

关于c++ - 将 OpenCV Mat 图像转换到 QImage 时警告使用旧式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57017400/

相关文章:

html - 带有叠加说明的图像

image - 是否可以放置图像而不是按钮,并使其可点击?

c++ - 如何判断何时在 QButtonGroup 中单击 QPushButton

c++ - 当使用派生对象通过另一个基函数调用时,基函数和派生调用基函数中的公共(public)函数?

c++ - "std::sin"调用上的 APPCRASH

c# - Windows Phone 8 Longlistselector 图像缓存

qt - Qt 5.15.2 的 QNetworkConfiguration 和 QNetworkConfigurationManager 替代品

c++ - 未初始化的值是由堆栈分配创建的 - Qt - C++

c++ - 为什么编译器错误地检测不到正确的函数签名?

c++ - 将成员函数指针传递给 c 风格的函数