シンプルな Qt Opencv アプリケーションをデプロイしようとしていました。コードは次のとおりです。
Qt: .pro ファイル:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = opencvVideoTest
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
INCLUDEPATH = -I/usr/local/include
LIBS += -lm -lopencv_core -lopencv_highgui -lopencv_imgproc
メインウィンドウ.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/core/core.hpp>
#include <opencv/cv.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
cv::Mat img;
cv::VideoCapture cap("BMWM5.avi");
if(cap.isOpened()){
for(;;){
cap.read(img);
cv::resize(img,img,cv::Size(604,480));
cv::imshow("Opencv", img);
cv::waitKey(33);
}
}
else{
}
}
MainWindow::~MainWindow()
{
delete ui;
}
上記のスニペットは、Opencv 2.4.3、ffmpeg 1.1.2、および Qt 5.0.1 を搭載した開発マシンで正常に動作します。macdeployqt を使用する前に otool を実行してデプロイしようとすると、次のようになります。
> /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
version 169.3.0) /usr/local/opt/opencv/lib/libopencv_core.2.4.3.dylib
(compatibility version 2.4.0, current version 2.4.3)
> /usr/local/opt/opencv/lib/libopencv_highgui.2.4.3.dylib
(compatibility version 2.4.0, current version 2.4.3)
> /usr/local/opt/opencv/lib/libopencv_imgproc.2.4.3.dylib
(compatibility version 2.4.0, current version 2.4.3)
> /usr/local/Qt5.0.1/5.0.1/clang_64/lib/QtWidgets.framework/Versions/5/QtWidgets
(compatibility version 5.0.0, current version 5.0.1)
> /usr/local/Qt5.0.1/5.0.1/clang_64/lib/QtGui.framework/Versions/5/QtGui
(compatibility version 5.0.0, current version 5.0.1)
> /usr/local/Qt5.0.1/5.0.1/clang_64/lib/QtCore.framework/Versions/5/QtCore
(compatibility version 5.0.0, current version 5.0.1)
> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
(compatibility version 1.0.0, current version 1.0.0)
> /System/Library/Frameworks/AGL.framework/Versions/A/AGL
(compatibility version 1.0.0, current version 1.0.0)
> /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current
version 56.0.0)
macdeployqt 出力後の otool:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0) @executable_path/../Frameworks/libopencv_core.2.4.3.dylib (compatibility version 2.4.0, current version 2.4.3) @executable_path/../Frameworks/libopencv_highgui.2.4.3.dylib (compatibility version 2.4.0, current version 2.4.3) @executable_path/../Frameworks/libopencv_imgproc.2.4.3.dylib (compatibility version 2.4.0, current version 2.4.3) @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets
(互換バージョン 5.0.0、現在のバージョン 5.0.1) @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui (互換バージョン 5.0.0、現在のバージョン 5.0.1) @executable_path/../Frameworks /QtCore.framework/Versions/5/QtCore (互換バージョン 5.0.0、現在のバージョン 5.0.1) /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (互換バージョン 1.0.0、現在のバージョン 1.0.1) 0) /System/Library/Frameworks/AGL.framework/Versions/A/AGL (互換バージョン 1.0.0、現行バージョン 1.0.0) /usr/lib/libstdc++.6.dylib (互換バージョン 7.0.0、現行バージョン56.0.0)
しかし、それを展開した後、ユーザーのマシンでアプリを実行しようとするとクラッシュし、エラーも報告されませんでした.Windowsでもまったく同じことが起こりましたが、opencv_ffmpeg.dllをexeフォルダにコピーすると正常に動作しました. ここで同じロジックを使用しようとして失敗しました。次に、すべての ffmpeg とその依存関係の各 lib ファイルを手動でプロジェクト フォルダーに追加しましたが、それでも失敗しました。他の解決策、助けてください。私は mac dpeloyment の初心者です。何かが欠けているか、見落とされていますか?