我有一个Qt 5.3.2 GUI项目,该项目使用通过MSVC110(x86)编译并通过InstallShield打包到单个setup.exe(包括所有依赖项)的 openCV 2.4.8。 我在三台不同的win7机器上测试了安装程序,其中两台很好地运行了该应用程序(三台机器中的任何一台都没有Qt或openCV环境) 在第三台计算机上,我遇到了一个奇怪的问题,尽管应用程序执行并且显示GUI失去功能,但主要问题是一个或多个插槽功能部分起作用 (自从我无法检查多个功能是否有问题)无法通过第一个)。

一个简化的示例是:

加载视频功能不保存帧。 它从提示用户使用QFileDialog::getOpenFileName选择视频文件QFileDialog::getOpenFileName ,该部分似乎工作正常。

然后,它将视频读取到cv::VideoCapture vc(videoPath.toStdString())我不知道这部分是否正常工作。

然后,应使用cv::imwrite(path, frame)不是NOT将每个帧保存在jpg文件中。

  • 我没有收到任何错误,并且该功能只是默默地失败了

该代码不是问题,因为它可以在两台计算机上正常工作。

我真的迷路了,以前从未见过类似的东西(我知道有些openCV功能可以在没有丢失* .dll错误的情况下静默失败,但是由于它确实在两台计算机上运行,​​因此似乎并非如此) 。 因此,我认为该问题与目标计算机有关, 但可能导致什么呢?

以防万一我写了一个上述的小型测试函数:

QString videoPath = QFileDialog::getOpenFileName(this, tr("Select video file"), QString(), tr("Video (*.avi *.mp4)"));
cv::VideoCapture vc;
vc.open(videoPath.toStdString());
if(!vc.isOpened()){
    qDebug() << "Failed opening file";
    return;
}

int count = 1;
cv::Mat frame;
while(vc.read(frame)){
    std::stringstream ss;
    ss << "test/" << count++ << ".jpg";
    cv::imwrite(ss.str(), frame);
    qDebug() << "wrote " << ss.str().c_str();
}
qDebug() << "done";

是的,它会失败吗?

PS:它的不写权限以管理员身份运行在其他驱动器等上,但未成功。

编辑:问题已解决。 我在问题中谈到的正是openCV无声失败。 需要与应用程序一起分发opencv_flann248.dll 希望其他人不会发生。 真是痛苦!

  ask by Dima Maligin translate from so

本文未有回复,本站智能推荐:

2回复

如何使用OpenCV从Qt制作.exe

我有使用一些OpenCV的QtProject,我想从中制作.exe以便在其他计算机上运行它。 即使对于Qt库,windeployqt.exe也无法执行此操作,但是如果我手动复制库,则Qt可以正常工作。 但是然后,我不知道如何使OpenCV工作。 我的.pro文件看起来像这样。 在这种
1回复

我的应用程序“Qt”可以在计算机上运行,​​但不能在朋友的计算机上运行

如标题中所述,我遇到了一个问题,当我在计算机上运行它时,即使将.exe文件移动到另一个文件夹中也可以,但无法在我朋友的文件夹中运行,我尝试使用64bit和86bit,但还是一样的问题。 这是错误: the application was unable to start correctly
4回复

由于找不到cv210.dll,导致应用程序启动失败”-在其他计算机上运行应用程序时出现问题

我正在使用OpenCV编写小型应用程序。 在我的计算机上,一切都很好。 我可以编译并运行程序,没有任何问题。但是,如果将Debug目录复制到另一台计算机上并尝试运行MyApplication.exe,我会得到 对我来说奇怪的是,所有的lib文件都在Debug目录中。 这是Debug中的
1回复

为什么我的Qt应用在计算机而不是我的计算机上请求msvcp120d.dll

我使用Qt5.5进行了一个应用程序,使用开放式简历。 它可以工作,所以现在我想将其部署在多台计算机上。 在第一台PC(PC1)上,它也可以工作:我复制了Qt的dll,然后打开cv并将路径添加到环境变量中。 我用我的应用程序,一些dll和数据(图像)复制了一个文件夹。 在第二台PC(P
1回复

Qt在其他计算机上的部署问题

编译程序发布后,我遇到了部署问题。 我可以在计算机上使用它,但除非在其上安装Qt,否则它不能在另一台计算机上使用。 我试图用MSVC2012和MinGW进行编译: 使用MSVC2012 ,该程序不会显示任何错误消息。 使用MinGW ,程序会向我发送c ++运行时错误。
1回复

将QT配置为“opencv2计算机视觉应用程序编程手册”一书中的代码

我正在使用QT Creator 3.2.1 / QT 5.3.2(clang5.0(苹果))自学本书“ opencv2计算机视觉应用程序编程食谱”。 当我尝试构建一个程序时,出现如下警告: 这是我的.pro文件: 我之前也遇到过类似的警告,但是我通过将这两行添加到.pro文件中来解决了
1回复

已发布的qt.exe在另一台计算机上无法打开

我正在使用Qt 5.0.2,并制作了一个C ++ gui exe程序。 我发布了它,并添加了所有需要的dll。 我检查了依赖行者。 我正在使用32位MSVC2010进行部署。 该程序可以在其上运行的计算机上完美运行,但是当我尝试在自己的全新家用计算机上运行该程序时,单击该按钮不会显示任何
1回复

部署Qt应用程序时缺少功能

我为Qt gui应用程序创建了一个deploy文件夹,我添加了他尖叫的所有.dll。 该应用程序正在运行,但是缺少2个功能。 和 在带有deploy文件夹的计算机上,两个对话框均未显示。 当我在要构建应用程序的PC上的Qt Creator中运行此程序时,这些对话框将正常工作。 我猜