我设置了hello world
项目here,它基本上是来自gradle项目here的样本的复制/粘贴。
我的下一步是hello world
但是对于OpenCV框架。它将在内存中读取图片并显示它。确切地说,main.cpp
我们会更喜欢那个
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
正如您所看到的,我包含了OpenCV标头,但我正在努力通过gradle添加lib本身。我可能不得不使用prebuilt方式,但我失败了。
答案 0 :(得分:0)
我认为您需要配置标头和预建的库链接:
我通常在android中做,但我不能保证它有效,因为我不知道你的gradle插件是什么。 但您可以使用线索,根据您的gradle版本,语法可以更改。
首先定义你的opencv目录:
opencv.dir="the site where opencv headers are"
定义opencv库后,定义headers.srcDir
repositories {
libs(PrebuiltLibraries) {
opencv_core {
headers.srcDir "your opencv.dir"
binaries.withType(StaticLibraryBinary) { binary ->
// This closure will be executed once for every buildType/platform combination
def variantDir = binary.targetPlatform.architecture.name == 'i386' ? 'Win32' : 'x64'
staticLibraryFile = "path/to/library/${variantDir}/opencv_core.so"
}
}
opencv_another_lib {
headers.srcDir "your opencv.dir"
binaries.withType(StaticLibraryBinary) { binary ->
// This closure will be executed once for every buildType/platform combination
def variantDir = binary.targetPlatform.architecture.name == 'i386' ? 'Win32' : 'x64'
staticLibraryFile = "path/to/library/${variantDir}/opencv_another_lib.so"
}
}
}
可能,例如opencv_core将有更多的3rparty依赖,尝试以相同的方式添加。
我希望这会有所帮助。
干杯。
垂发。