【发布时间】:2011-11-05 12:38:40
【问题描述】:
我在 qt gui 应用程序的表单之间传递 cv::mat 数据时遇到问题,目前我只想在主窗口上传递用户选择的图像并将其显示在结果页面上
void MainWindow::on_pushButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"), ".", tr("Image Files (*.png *.jpg *.bmp)"));
Lateral= cv::imread(fileName.toAscii().data());
}
在我定义的主窗口的头文件中:-
public:
cv::Mat get_Lateral(cv::Mat img);
cv::Mat get_Posteroanterior();
在 MainWindow.cpp 文件中,我定义了以下内容(我尝试了该方法的一些变体):-
cv::Mat MainWindow::get_Lateral(cv::Mat img ){
Lateral.copyTo(img);
return img;
}
cv::Mat MainWindow::get_Posteroanterior(){
return Posteroanterior;
}
最后在新表格上我有这样的东西:-
MainWindow Mw ;
cv::Mat op;
Mw.get_Lateral(op);
//(Mw.get_Posteroanterior()).copyTo(op);
cv::namedWindow("Lateral Image");
cv::imshow("Lateral Image",op);
当我运行它时,我得到一个运行时错误,所以我添加了一个 if 语句来检查 cv::mat op 的内容,如下所示:-
MainWindow Mw ;
cv::Mat op;
Mw.get_Lateral(op);
//(Mw.get_Posteroanterior()).copyTo(op);
if (!op.data)
cv::namedWindow("dud Image");
else{
cv::namedWindow("Lateral Image");
cv::imshow("Lateral Image",op);
}
我得到了暗示 op 为空的无效图像窗口。
任何关于如何正确执行此过程的建议都将受到赞赏,我对 opencv 和 c++ 还很陌生,因此对于任何明显的错误,我深表歉意。
干杯
【问题讨论】: