将 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
虽然我一直在将 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