Articles of c ++

从照片opencv中删除眩光

因此,我使用opencv捕获文档,扫描并裁剪文档。 当房间里没有灯光时,它可以完美地工作。 当房间里有一些灯光,桌子上有眩光并且文件靠近它时,它也会抓住眩光作为矩形的一部分。 如何从照片中消除眩光? 这是我用来获取我想要的图像的代码: Mat &image = *(Mat *) matAddrRgba; Rect bounding_rect; Mat thr(image.rows, image.cols, CV_8UC1); cvtColor(image, thr, CV_BGR2GRAY); //Convert to gray threshold(thr, thr, 150, 255, THRESH_BINARY + THRESH_OTSU); //Threshold the gray vector<vector > contours; // Vector for storing contour vector hierarchy; findContours(thr, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE); // Find the contours in the image […]

如何在Android上使用framebuffer进行绘制?

我想编写一个Android应用程序,它使用framebuffer在屏幕上显示内容。 这将仅在特定的root设备上运行,因此权限等不是问题。 相同的应用程序(无论如何简单的测试版本)已经在PC / Linux上正常运行。 问题: 如何避免Android操作系统访问帧缓冲区? 我希望,在我的应用程序运行时,让操作系统永远不会触摸帧缓冲区,没有写入和没有ioctl。 我需要做什么来独占使用帧缓冲,然后(当我的应用程序退出时)将其返回给操作系统? Android framebuffer和Linux framebuffer之间有什么区别需要注意吗? PS我想将我的应用程序作为常规Android应用程序(带有一些本机代码)启动,它除了用于接管整个屏幕的帧缓冲区绘制外,没有可见的UI。 能够从操作系统获取事件会很高兴。 另见: http : //www.kandroid.org/online-pdk/guide/display_drivers.html

JNI ERROR(app bug):本地参考表溢出(max = 512)

我正在尝试使用自己的数据集运行LibSVMAndroidClassification Android项目。 它与已经提供的数据集完美配合,当我使用100行(小于原始大小的1%)的csv时,它也可以正常工作。 但是当我尝试使用例如1000行的“Train CSV”时,我看到了这个错误。 我甚至试图在Manifest.xml中设置android:largeHeap =“true”但没有任何改进。 这是我的logcat转储。 10-31 17:49:06.745: E/dalvikvm(2008): JNI ERROR (app bug): local reference table overflow (max=512) 10-31 17:49:06.745: W/dalvikvm(2008): JNI local reference table (0x754057e0) dump: 10-31 17:49:06.745: W/dalvikvm(2008): Last 10 entries (of 512): 10-31 17:49:06.745: W/dalvikvm(2008): 511: 0x42d900b0 double 10-31 17:49:06.745: W/dalvikvm(2008): 510: 0x42a19698 int 10-31 17:49:06.745: W/dalvikvm(2008): 509: 0x42d8ff78 double […]

visual studio 2015,android命令’run-as’失败

环境:windows 10(家庭,专业),visual studio 2015(社区,专业)所有组合。 启动visual studio 2015 update 1,新项目,Native-Activity Application(Android),从而制作默认的android原生应用程序。 构建解决方案并开始调试。 然后会出现这样的错误消息: 。 无法开始调试。 Android命令’run-as’失败。 套餐’com.Android1’未知。 我用Google搜索,但找不到如何解决。 我错过了什么? 如何设置我的环境,或修复一些东西?

Android:需要在c ++ NDK中创建共享首选项对象并存储一些布尔值

我是新手,不知道怎么开始这个, 我创建了一个使用Android.mk链接到C ++的项目 因此,当我从java调用一个方法时,它应该将存储布尔值存储到我的共享首选项对象中。 这是我的JNI方法 extern “C” JNIEXPORT void JNICALL Java_com_example_sample_storeBoolean(JNIEnv *env,jobject instance){ //TODO const char *name =”hello”; __android_log_print(ANDROID_LOG_ERROR, “TRACKERS”, “***** %s *****”, name); } 正常日志我已经打印它现在只需要创建sharepreference对象并设置布尔值 SharedPreferences prefs = context.getSharedPreferences(“myprefdata”, Context.MODE_PRIVATE); prefs.edit().putBoolean(“settingnootification”, true).commit(); 请指导我怎么做。 谢谢 public abstract SharedPreferences getSharedPreferences(String name, int mode); 需要在c ++中使用此方法

Android NDK查找动态链接:无法调试库

我有一个项目,可以很好地编译,加载和运行在Android设备中。 当我调用gdb服务器时,它也可以正常工作。 然后,当我调用gdb客户端以断点运行时,就会显示消息: Error while mapping shared library sections: /system/bin/linker: No such file or directory. libandroid.so: No such file or directory. liblog.so: No such file or directory. libEGL.so: No such file or directory. libOpenSLES.so: No such file or directory. libGLESv2.so: No such file or directory. libGLESv2_POWERVR_SGX540_120.so: No such file or directory. … warning: Unable to […]

如何使用JNI代码正确导入Android库?

背景 我使用JNI制作了一个用于位图处理的小SDK(链接在这里 )。 它只有2个项目:示例项目(演示SDK的使用)和SDK本身。 SDK项目是一个Android项目,它包含一些C / C ++代码。 问题 出于某种原因,即使在我创建项目时,一切都很顺利,现在我尝试获取库项目并将其导入Eclipse,然后打开我制作的CPP文件,我看到很多错误在它上面,如此: 这个问题 它为什么会发生? 如何正确导入项目? 我可以帮助使用它的人能够很好地导入它吗? 我试图用JNI创建一个全新的项目,并且只是(仔细地)复制了我的库中的文件,并且编译得很好,但这不是导入项目的好方法……

Android本机库从aar链接到另一个本机库

我有一个奇怪的问题。 我有一个aar库,它包含并使用本机.so库。 现在,我想编写另一个lib,它依赖于该库,并且还具有本机部分,具体取决于来自第一个lib的本机lib。 依赖库使用第一个lib中的本机代码和java包装器。 我想知道,有没有办法,如何通过标准gradle依赖(使用第一个lib中复制的头文件)来做到这一点? 或者让我直接从源代码构建第二个库? 为什么我需要这个:我们有一个基本function的多平台lib,对于android as aar。 这个lib可以在标准的Android应用程序中使用,我们在多个项目中使用它,它没有其他本机代码。 但在一个应用程序中,我们想要编写多平台共享应用程序代码,具体取决于lib,我希望将这些库分开。 谢谢!

键入从C到Java的转换

我尽了最大的努力去谷歌,但却没有find一个表格类似转换的表格forms的干净答案。 我想转换这些types的原因是因为我使用Android NDK从本机代码调用函数。 问题是本机代码调用Java中不存在的不同types。 我实际上没有C语言的经验,并且通过快速查看代码find了这几种types。 请随意编辑此post以添加要转换的不同types。 From C to Java long -> short -> char -> unsigned long -> unsigned short -> unsigned char -> byte -> Int8 -> Int16 -> Int32 -> UInt8 -> UInt16 -> UInt32 -> 此外,如果其中任何一个无法转换为Javatypes,请解释原因。

Android:链接到预构建的静态库

我已经为Android编译了一些静态和共享库。 具体来说,我有图书馆 libcoinblas.a libcoinlapack.a libcoinmetis.a libcoinmumps.a libipopt.a libcoinblas.so libcoinlapack.so libcoinmetis.so libcoinmumps.so libipopt.so 此外,这些库是相互依赖的,即 Lapack requires Blas Mumps requires Blas and Metis Ipopt requires Mumps, Metis, and Lapack Android项目在使用共享库时正确链接和运行,但无法使用静态库构建。 在共享的情况下,我正在使用cmake文件 cmake_minimum_required(VERSION 3.4.1) add_library( native-lib SHARED src/main/cpp/cpp_example.cpp src/main/cpp/MyNLP.cpp) # Add dependent libraries add_library(blas SHARED IMPORTED) set_property(TARGET blas PROPERTY IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libcoinblas.so) add_library(lapack SHARED IMPORTED) set_property(TARGET lapack PROPERTY IMPORTED_LOCATION […]