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