如何使用 OpenCV 从 C++ 程序制作 Android 应用程序

Posted

技术标签:

【中文标题】如何使用 OpenCV 从 C++ 程序制作 Android 应用程序【英文标题】:How to make Android application from from C++ program using OpenCV 【发布时间】:2014-08-09 23:16:49 【问题描述】:

我有一个这样开始的 C++ 程序:

#include "opencv2/highgui/highgui.hpp"
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <vector>
#include <stdio.h>
#include "linefinder.h"

#define PI 3.1415926

using namespace cv;

int main(int argc, char* argv[]) 
    int houghVote = 200;
    string arg = argv[1];
    bool showSteps = argv[2];

    string window_name = "Processed Video";
    namedWindow(window_name, CV_WINDOW_KEEPRATIO); //resizable window;
    VideoCapture capture(arg);

我想用它制作一个 android 应用。 我已经安装了 NDK,但我不知道我现在要做什么。

我是否必须更改 C++ 主程序中的任何内容才能在 Android 上运行,或者我可以不加改动地编译和运行它吗?

【问题讨论】:

docs.opencv.org/doc/tutorials/introduction/… 是的,我已经检查了该页面,但没有帮助。我有程序作为人脸检测运行,但我不知道如何在 Android 程序中使用我自己的 C++ 代码 【参考方案1】:

Introduction to Android

Android 提供了丰富的应用程序框架,允许您在 Java 语言环境 中为移动设备构建创新的应用程序和游戏。 ... Android 应用程序构建为可以单独调用的不同组件的组合。

您需要使用 Java 构建您的应用,然后通过 JNI 调用您的 C++ 代码。

另外,Android NDK 有话要说

您应该只在对您的应用程序必不可少的情况下使用 NDK——绝不是因为您只是更喜欢用 C/C++ 编程

特别是,阅读Using the NDK 以了解为什么您无法在不更改任何内容的情况下运行您的 C++ 主程序

【讨论】:

以上是关于如何使用 OpenCV 从 C++ 程序制作 Android 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MacOS 上使用 OpenCV 链接 C++ 程序 [重复]

带有objective-c的opencv和c++ [关闭]

C++和OpenCV的图像比较方法

OpenCV && C++ 03 - Save an Image to a File

c++ OpenCV CVCalibrateCamera2 导致多个错误

如何知道 OpenCV 中的图像是不是为 RGB?