繁体   English   中英

Opencv4Android:如何与C ++一起使用

[英]Opencv4Android: How to use with C++

我也在尝试使用适用于Android的opencv构建示例。 这是我的C ++代码:

  • 头文件:

     #ifdef __cplusplus extern "C" { #endif #include "jni.h" #include "opencv2/core/core.hpp" namespace openCVFuncs { cv::Mat contrastFilter(cv::Mat inputMatm, float contrastValue); } #ifdef __cplusplus } #endif 
  • Cpp文件:

     namespace openCVFuncs { cv::Mat contrastFilter(cv::Mat inputMat, float contrastValue) { contrastValue = pow(2,contrastValue); cv::Mat outMat = inputMat.clone(); uchar* data_img_in=(uchar*)inputMat.data; uchar* data_img_out=(uchar*)outMat.data; int temp = 0; for(int i=0;i<inputMat.size().height;i++) for(int j=0;j<inputMat.size().width;j++) for (int c=0;c<inputMat.channels();c++) { temp = (data_img_in+inputMat.step[0]*i)[j*inputMat.channels()+c]; temp = (int)((temp - 128.0) * contrastValue) +128; if (temp < 5) temp = 5; if (temp > 255) temp = 255; (data_img_out+outMat.step[0]*i)[j*outMat.channels()+c] = temp; } return outMat; }; } 

我有很多这样的错误:

/opt/android-ndk-r9/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/valarray_before.h:652:3:错误:具有C链接的模板

我的代码有什么问题?

当使用“外部C”块时,您只能使用C可用的东西,从而排除函数重载/多态性,名称空间等。

在发布的头文件中,您包含一个.hpp文件(该文件可能包含不可用的定义之一)并定义一个名称空间。

该页面提供了一些关于该主题的很好的指针,说明了可以做什么和不能做什么以及如何包装对C ++名称空间/重载函数的调用,以供在C编译器编译的库中使用,请参阅“从C源代码访问C ++代码”:

http://www.oracle.com/technetwork/articles/servers-storage-dev/mixingcandcpluspluscode-305840.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM