Giter Site home page Giter Site logo

pqpo / smartcropper Goto Github PK

View Code? Open in Web Editor NEW
4.0K 93.0 724.0 243.28 MB

🔥 A library for cropping image in a smart way that can identify the border and correct the cropped image. 智能图片裁剪框架。自动识别边框,手动调节选区,使用透视变换裁剪并矫正选区;适用于身份证,名片,文档等照片的裁剪。

Home Page: https://pqpo.me/2017/09/11/opencv-border-recognition/

Java 98.87% CMake 0.04% C++ 0.44% Python 0.65%
smartcropper hed-net tensorflow image-cropper detection image opencv pytorch

smartcropper's Introduction

SmartCropper

English | 中文

目前优化了一套更高识别率的模型和算法,有意向合作的请联系邮箱:[email protected]

简单易用的智能图片裁剪库,适用于身份证,名片,文档等照片的裁剪。 如果觉得还不错,欢迎 star,fork。

你也可以关注我的另一个库 SmartCamera: SmartCamera 是一个 Android 相机拓展库,能够实时采集并且识别相机内物体边框是否吻合指定区域。

支持特性

  • 使用智能算法(基于opencv)识别图片中的边框
  • 支持拖动锚点,手动调节选区,放大镜效果提升定位体验
  • 使用透视变换裁剪并矫正选区,还原正面图片
  • 支持丰富的UI设置,如辅助线,蒙版,锚点,放大镜等

例子(传送门

1. 选择图片后智能选区,使用透视变换裁剪并矫正选区:

2. 拖动锚点,手动调节选区,右上角放大镜效果方便拖拽定位:

gif 动画:

优化智能选区算法(V2.1.1+)

使用机器学习算法代理 Canny 算法,提高识别率(基于 TensorFlow 的 HED 网络). 感谢:https://github.com/fengjian0106/hed-tutorial-for-document-scanning

  1. build.gradle 添加如下代码,不压缩模型:
aaptOptions {
    noCompress "tflite"
    noCompress "lite"
}
  1. 在合适的地方初始化(比如在 Application.onCreate):
SmartCropper.buildImageDetector(this);

接入

1.根目录下的 build.gradle 添加:

allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
}

2.添加依赖

dependencies {
	  compile 'com.github.pqpo:SmartCropper:v2.1.3'
}

注意:由于使用了 JNI, 请不要混淆

-keep class me.pqpo.smartcropperlib.**{*;}

使用

1. 裁剪布局:

<me.pqpo.smartcropperlib.view.CropImageView   
        android:id="@+id/iv_crop"  
        android:layout_width="match_parent" 
        android:layout_height="match_parent" />  

注意: CropImageView 继承至 ImageView,但是 ScaleType 必须为居中类型,如果手动设置成 fit_end,fit_start,matrix 将会报错。

2. 设置待裁剪图片:

ivCrop.setImageToCrop(selectedBitmap); 

该方法内部会使用 native 代码智能识别边框,并绘制图片与选区。在 native 层实现,大大的提高了运行效率,运行时间与图片大小成正比,在大图片的情况下,可以考虑在子线程执行,或者压缩传入的图片。

3. 裁剪选区内的图片:

Bitmap crop = ivCrop.crop();  

根据选区裁剪出选区内的图片,并使用透视变换矫正成正面图片。

注意:改方法主要逻辑也是位于 native 层,运行时间与图片大小成正比,在大图片的情况下,可以考虑在子线程执行,或者压缩传入的图片。

Attributes

name format description
civMaskAlpha integer 选区外蒙版的透明度,取值范围 0-255
civShowGuideLine boolean 是否显示辅助线,默认 true
civLineColor color 选区线的颜色
civLineWidth dimension 选区线的宽度
civShowMagnifier boolean 在拖动的时候是否显示放大镜,默认 true
civMagnifierCrossColor color 放大镜十字准心的颜色
civGuideLineWidth dimension 辅助线宽度
civGuideLineColor color 辅助线颜色
civPointFillColor color 锚点内部区域填充颜色
civPointFillAlpha integer 锚点内部区域填充颜色透明度

Features

  • 优化点排序算法
  • CropImageView 选区放大镜效果
  • CropImageView xml属性配置
  • 优化智能选区算法
  • 欢迎提 ISSUE

关于我:

  • qq群: Github 开源交流群

License

Copyright 2017 pqpo

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

smartcropper's People

Contributors

leiiiooo avatar nineeeeeee avatar pqpo avatar xiaojintongxue avatar z4hyoung avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

smartcropper's Issues

1.1.3 限制凸四边形

在1.1.3版本里面限制了凸四边形。图片存在自动识别出的 四边形是凹的情况下,突出的点将不能被拖拽,除非其他点被拖拽了

Borders not identified

Hi, Thanks for the great library. I've download and ran the demo app and could successfully run the app the get the expected result without any crashes. But as you mentioned in the Readme file, borders are not identified for a document or business card in the image. Can you please fix this in code? It would a great help if you fix this in next release.

如何判断4个点坐标是左上角\左下角\右上角\右下角

我看到了你的一个帖子: https://www.v2ex.com/t/381107
已知四个点的坐标A(x1, y1) B(x2, y2) C(x3, y3) D(x4, y4) ,如何确定这四个点分别为 左上,右上,右下,左下。
我想到了凸四边形的解决方案:

  1. 连接对角线(假设ABCD是依次的4个点,直接连接AC、BD就能得到交点了),就能获取到对角线交点坐标,假设是P(x0, y0)
  2. 分别判断四个点与P点的关系,如果xi<=x0&yi<y0 就是左上角; xi<x0&yi>y0就是左下角;xi>=x0&yi>y0就是右下角; xi>x0&yi<y0就是右上角;

备注:如果ABCD不确定是依次的4个点,那么交点要么是连接AC、BD,要么就是连接AB、CD。两条直线如果平行(例如AC、BD平行),那么就是另外一种情况必然是相交的两条线(就直接取AB、CD的交点);如果均不平行,就判断相交的点是否在四边形内,在四边形内的就是交点

demo编译出错了

Build command failed.
Error while executing process D:\AndroidSDK\sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {--build D:\android_pro\internet\SmartCropper-master\smartcropperlib.externalNativeBuild\cmake\debug\armeabi-v7a --target smart_cropper}
[1/4] Building CXX object CMakeFiles/smart_cropper.dir/src/main/cpp/smart_cropper.cpp.o
[2/4] Building CXX object CMakeFiles/smart_cropper.dir/src/main/cpp/android_utils.cpp.o
[3/4] Building CXX object CMakeFiles/smart_cropper.dir/src/main/cpp/Scanner.cpp.o
FAILED: D:\AndroidSDK\sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi --gcc-toolchain=D:/AndroidSDK/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 --sysroot=D:/AndroidSDK/sdk/ndk-bundle/sysroot -Dsmart_cropper_EXPORTS -I../../../../opencv/include -I../../../../src/main/cpp/include -isystem D:/AndroidSDK/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include -isystem D:/AndroidSDK/sdk/ndk-bundle/sources/android/support/include -isystem D:/AndroidSDK/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++abi/include -isystem D:/AndroidSDK/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=14 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -std=c++11 -frtti -fexceptions -lz -O0 -fno-limit-debug-info -fPIC -MD -MT CMakeFiles/smart_cropper.dir/src/main/cpp/smart_cropper.cpp.o -MF CMakeFiles\smart_cropper.dir\src\main\cpp\smart_cropper.cpp.o.d -o CMakeFiles/smart_cropper.dir/src/main/cpp/smart_cropper.cpp.o -c D:\android_pro\internet\SmartCropper-master\smartcropperlib\src\main\cpp\smart_cropper.cpp
clang++.exe: warning: -lz: 'linker' input unused [-Wunused-command-line-argument]
In file included from D:\android_pro\internet\SmartCropper-master\smartcropperlib\src\main\cpp\smart_cropper.cpp:6:
In file included from ../../../../src/main/cpp/include\android_utils.h:9:
In file included from ../../../../opencv/include\opencv2/opencv.hpp:47:
In file included from ../../../../opencv/include\opencv2/core/core.hpp:4883:
../../../../opencv/include\opencv2/core/operations.hpp:74:16: fatal error: 'ext/atomicity.h' file not found
#include <ext/atomicity.h>
^~~~~~~~~~~~~~~~~
1 error generated.
FAILED: D:\AndroidSDK\sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi --gcc-toolchain=D:/AndroidSDK/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 --sysroot=D:/AndroidSDK/sdk/ndk-bundle/sysroot -Dsmart_cropper_EXPORTS -I../../../../opencv/include -I../../../../src/main/cpp/include -isystem D:/AndroidSDK/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include -isystem D:/AndroidSDK/sdk/ndk-bundle/sources/android/support/include -isystem D:/AndroidSDK/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++abi/include -isystem D:/AndroidSDK/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=14 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -std=c++11 -frtti -fexceptions -lz -O0 -fno-limit-debug-info -fPIC -MD -MT CMakeFiles/smart_cropper.dir/src/main/cpp/android_utils.cpp.o -MF CMakeFiles\smart_cropper.dir\src\main\cpp\android_utils.cpp.o.d -o CMakeFiles/smart_cropper.dir/src/main/cpp/android_utils.cpp.o -c D:\android_pro\internet\SmartCropper-master\smartcropperlib\src\main\cpp\android_utils.cpp
clang++.exe: warning: -lz: 'linker' input unused [-Wunused-command-line-argument]
In file included from D:\android_pro\internet\SmartCropper-master\smartcropperlib\src\main\cpp\android_utils.cpp:4:
In file included from ../../../../src/main/cpp/include\android_utils.h:9:
In file included from ../../../../opencv/include\opencv2/opencv.hpp:47:
In file included from ../../../../opencv/include\opencv2/core/core.hpp:4883:
../../../../opencv/include\opencv2/core/operations.hpp:74:16: fatal error: 'ext/atomicity.h' file not found
#include <ext/atomicity.h>
^~~~~~~~~~~~~~~~~
1 error generated.
FAILED: D:\AndroidSDK\sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi --gcc-toolchain=D:/AndroidSDK/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 --sysroot=D:/AndroidSDK/sdk/ndk-bundle/sysroot -Dsmart_cropper_EXPORTS -I../../../../opencv/include -I../../../../src/main/cpp/include -isystem D:/AndroidSDK/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/include -isystem D:/AndroidSDK/sdk/ndk-bundle/sources/android/support/include -isystem D:/AndroidSDK/sdk/ndk-bundle/sources/cxx-stl/llvm-libc++abi/include -isystem D:/AndroidSDK/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=14 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -std=c++11 -frtti -fexceptions -lz -O0 -fno-limit-debug-info -fPIC -MD -MT CMakeFiles/smart_cropper.dir/src/main/cpp/Scanner.cpp.o -MF CMakeFiles\smart_cropper.dir\src\main\cpp\Scanner.cpp.o.d -o CMakeFiles/smart_cropper.dir/src/main/cpp/Scanner.cpp.o -c D:\android_pro\internet\SmartCropper-master\smartcropperlib\src\main\cpp\Scanner.cpp
clang++.exe: warning: -lz: 'linker' input unused [-Wunused-command-line-argument]
In file included from D:\android_pro\internet\SmartCropper-master\smartcropperlib\src\main\cpp\Scanner.cpp:4:
In file included from ../../../../src/main/cpp/include\Scanner.h:8:
In file included from ../../../../opencv/include\opencv2/opencv.hpp:47:
In file included from ../../../../opencv/include\opencv2/core/core.hpp:4883:
../../../../opencv/include\opencv2/core/operations.hpp:74:16: fatal error: 'ext/atomicity.h' file not found
#include <ext/atomicity.h>
^~~~~~~~~~~~~~~~~
1 error generated.
ninja: build stopped: subcommand failed.

运行demo出错了

Build command failed.

Error while executing process D:\AndroidSDK\sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {-HD:\android_pro\internet\SmartCropper-master\smartcropperlib -BD:\android_pro\internet\SmartCropper-master\smartcropperlib.externalNativeBuild\cmake\release\armeabi -GAndroid Gradle - Ninja -DANDROID_ABI=armeabi -DANDROID_NDK=D:\AndroidSDK\sdk\ndk-bundle -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\android_pro\internet\SmartCropper-master\smartcropperlib\build\intermediates\cmake\release\obj\armeabi -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=D:\AndroidSDK\sdk\cmake\3.6.4111459\bin\ninja.exe -DCMAKE_TOOLCHAIN_FILE=D:\AndroidSDK\sdk\ndk-bundle\build\cmake\android.toolchain.cmake -DANDROID_PLATFORM=android-14 -DCMAKE_CXX_FLAGS=-std=c++11 -frtti -fexceptions -lz}

(include) CMakeLists.txt

边界检测识别不正确

我运行demo,最终的效果和你gif里展示的效果相差太大,我对书本拍照后,边界检测完全不对,一个点都没对上

拍照后的点没有在四周

拍一张纸,四个点没有在纸的四周,而是没有规则的显示在上面,需要手动的把它们拉倒四周,请问这个怎样去优化?

Border not identified

App is working fine but after clicking an image, it sometimes identifies borders and sometimes it doesn't. Please tell me more about the tech you are using and how it can always detect borders in the image.

编译TBB报错

你好,我用你的代码在编译的时候报TBB错,这个该怎么解决呐?

错误信息如下:
Error while executing process E:\sens\android\sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {--build G:\android\projects\demo\SmartCropper\smartcropperlib\.externalNativeBuild\cmake\release\armeabi-v7a --target smart_cropper} [1/1] Linking CXX shared library ..\..\..\..\build\intermediates\cmake\release\obj\armeabi-v7a\libsmart_cropper.so FAILED: cmd.exe /C "cd . && E:\sens\android\sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=armv7-none-linux-androideabi --gcc-toolchain=E:/sens/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 --sysroot=E:/sens/android/sdk/ndk-bundle/sysroot -fPIC -isystem E:/sens/android/sdk/ndk-bundle/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=16 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fno-integrated-as -mthumb -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -frtti -fexceptions -lz -Os -DNDEBUG -Wl,--exclude-libs,libgcc.a --sysroot E:/sens/android/sdk/ndk-bundle/platforms/android-16/arch-arm -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libsmart_cropper.so -o ..\..\..\..\build\intermediates\cmake\release\obj\armeabi-v7a\libsmart_cropper.so CMakeFiles/smart_cropper.dir/src/main/cpp/Scanner.cpp.o CMakeFiles/smart_cropper.dir/src/main/cpp/smart_cropper.cpp.o CMakeFiles/smart_cropper.dir/src/main/cpp/android_utils.cpp.o ../../../../opencv/lib/armeabi-v7a/libopencv_imgproc.a ../../../../opencv/lib/armeabi-v7a/libopencv_core.a -llog -ljnigraphics -lm "E:/sens/android/sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/libgnustl_static.a" && cd ." ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function tbb::interface7::internal::start_for<tbb::blocked_range<int>, (anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>::~start_for(): error: undefined reference to 'vtable for tbb::task' E:/sens/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function (see go/missingkeymethod) ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function tbb::interface7::internal::flag_task::~flag_task(): error: undefined reference to 'vtable for tbb::task' E:/sens/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function (see go/missingkeymethod) ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function tbb::task_scheduler_init::~task_scheduler_init(): error: undefined reference to 'tbb::task_scheduler_init::terminate()' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function tbb::interface7::internal::flag_task::~flag_task(): error: undefined reference to 'vtable for tbb::task' E:/sens/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function (see go/missingkeymethod) ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function tbb::interface7::internal::start_for<tbb::blocked_range<int>, (anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>::~start_for(): error: undefined reference to 'vtable for tbb::task' E:/sens/android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: the vtable symbol may be undefined because the class is missing its key function (see go/missingkeymethod) ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function cv::parallel_for_(cv::Range const&, cv::ParallelLoopBody const&, double): error: undefined reference to 'tbb::task_group_context::init()' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function cv::parallel_for_(cv::Range const&, cv::ParallelLoopBody const&, double): error: undefined reference to 'tbb::internal::allocate_root_with_context_proxy::allocate(unsigned int) const' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function cv::parallel_for_(cv::Range const&, cv::ParallelLoopBody const&, double): error: undefined reference to 'tbb::internal::get_initial_auto_partitioner_divisor()' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function cv::parallel_for_(cv::Range const&, cv::ParallelLoopBody const&, double): error: undefined reference to 'tbb::task_group_context::~task_group_context()' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function cv::parallel_for_(cv::Range const&, cv::ParallelLoopBody const&, double): error: undefined reference to 'tbb::task_group_context::~task_group_context()' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function cv::parallel_for_(cv::Range const&, cv::ParallelLoopBody const&, double): error: undefined reference to 'tbb::internal::allocate_root_with_context_proxy::free(tbb::task&) const' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function cv::getNumThreads(): error: undefined reference to 'tbb::task_scheduler_init::default_num_threads()' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function cv::setNumThreads(int): error: undefined reference to 'tbb::task_scheduler_init::terminate()' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function cv::setNumThreads(int): error: undefined reference to 'tbb::task_scheduler_init::initialize(int)' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function tbb::interface7::internal::start_for<tbb::blocked_range<int>, (anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>::execute(): error: undefined reference to 'tbb::internal::allocate_continuation_proxy::allocate(unsigned int) const' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function tbb::interface7::internal::start_for<tbb::blocked_range<int>, (anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>::execute(): error: undefined reference to 'tbb::internal::allocate_child_proxy::allocate(unsigned int) const' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function tbb::interface7::internal::start_for<tbb::blocked_range<int>, (anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>::execute(): error: undefined reference to 'tbb::task_group_context::is_group_execution_cancelled() const' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function tbb::interface7::internal::start_for<tbb::blocked_range<int>, (anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>::execute(): error: undefined reference to 'tbb::internal::allocate_continuation_proxy::allocate(unsigned int) const' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function tbb::interface7::internal::start_for<tbb::blocked_range<int>, (anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>::execute(): error: undefined reference to 'tbb::internal::allocate_child_proxy::allocate(unsigned int) const' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function _GLOBAL__sub_I_parallel.cpp: error: undefined reference to 'tbb::task_scheduler_init::initialize(int, unsigned int)' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:vtable for tbb::interface7::internal::flag_task: error: undefined reference to 'tbb::task::note_affinity(unsigned short)' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:typeinfo for tbb::interface7::internal::flag_task: error: undefined reference to 'typeinfo for tbb::task' ../../../../opencv/lib/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:typeinfo for tbb::interface7::internal::start_for<tbb::blocked_range<int>, (anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>: error: undefined reference to 'typeinfo for tbb::task' clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed.

Requires overriding application info to use library.

If the manifest file in the app has label and allowBack, the library doesn't get added as we need to override it.
tools:replace="android:allowBackup, android:label"
Removing this in the library could make it easier to use.

Please add support for 64-bit abi

Please add support for 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'mips', 'mips64' all this abi's supported by android. or tell me way how I can add them.

android7.0中 setImageToCrop方法中报错

在setImageToCrop方法中报错如下
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/haiyun.haiyunyihao-1/base.apk"],nativeLibraryDirectories=[/data/app/haiyun.haiyunyihao-1/lib/arm64, /data/app/haiyun.haiyunyihao-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64, /system/vendor/lib64, /product/lib64]]] couldn't find "libsmart_cropper.so"

希望能提供隐藏 裁剪框 的接口

原本想通过 cropImageView.setCropPoints(null); 来取消裁剪框对的,但是代码里面进行判定了如果 传入的为null,就会截取整个图片。 我想自己控制裁剪框的出现机制,随时设置裁剪框的可见性。谢谢了

java.lang.NullPointerException (no error message)

出现了这个错误是为什么?

Error:A problem occurred configuring project ':app'.

Could not resolve all dependencies for configuration ':app:_debugApk'.
A problem occurred configuring project ':smartcropperlib'.
> java.lang.NullPointerException (no error message)

编译smartcropperlib报错

错误如下:
Warning:warning: -lz: 'linker' input unused [-Wunused-command-line-argument]
Warning:warning: -lz: 'linker' input unused [-Wunused-command-line-argument]
Warning:warning: -lz: 'linker' input unused [-Wunused-command-line-argument]
Error:error: undefined reference to 'tbb::task_scheduler_init::terminate()'
Error:error: undefined reference to 'tbb::task_scheduler_init::initialize(int, unsigned int)'
Error:error: linker command failed with exit code 1 (use -v to see invocation)

请问该怎么解决?

怎么旋转图片?

比如说横屏拍照,照片竖着,截出来也是竖屏,但是我需要横屏显示,这个怎么解决下呢?

How to set point on image's corner

Whew i click photo from camera & pick image from gallery then all point set to four corner, not image between or other image area,

Like want :=>
screenshot_2018-08-27-14-10-16-820_com digiwallet

Not Like :=>
screenshot_2018-08-27-14-10-01-318_com digiwallet

Please help, Thanks.

能不能增加一些裁剪之后的图像增强的功能方便使用

希望能够增加:增加亮度、锐化、转换为灰度等基本的图像增强功能,因为扫描得到的文稿除了需要裁剪,有时候不清晰或者偏暗、反光等需要基本的处理,虽然OepnCV中能够实现,但是不熟悉,希望能够继承到这个包中。

识别层消失

拖动右下角的识别点到左上角的识别点,差不多重叠时整个识别区域消失,识别点也消失

麻烦大神帮忙看一下,出的这个问题,我真的完全看不懂,也不知道怎么问。。。麻烦您了

Build command failed.
Error while executing process /opt/android-sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /home/codersun/wellsignAS/smartcropperlib/.externalNativeBuild/cmake/debug/x86 --target smart_cropper}
[1/4] Building CXX object CMakeFiles/smart_cropper.dir/src/main/cpp/Scanner.cpp.o
[2/4] Building CXX object CMakeFiles/smart_cropper.dir/src/main/cpp/smart_cropper.cpp.o
[3/4] Building CXX object CMakeFiles/smart_cropper.dir/src/main/cpp/android_utils.cpp.o
clang++: warning: -lz: 'linker' input unused [-Wunused-command-line-argument]
clang++: warning: -lz: 'linker' input unused [-Wunused-command-line-argument]
clang++: warning: -lz: 'linker' input unused [-Wunused-command-line-argument]
[4/4] Linking CXX shared library ../../../../build/intermediates/cmake/debug/obj/x86/libsmart_cropper.so
FAILED: : && /home/codersun/Android/Sdk/ndk-bundle/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ --target=i686-none-linux-android --gcc-toolchain=/home/codersun/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64 --sysroot=/home/codersun/Android/Sdk/ndk-bundle/sysroot -fPIC -isystem /home/codersun/Android/Sdk/ndk-bundle/sysroot/usr/include/i686-linux-android -D__ANDROID_API__=14 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -std=c++11 -frtti -fexceptions -lz -O0 -fno-limit-debug-info -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -nostdlib++ --sysroot /home/codersun/Android/Sdk/ndk-bundle/platforms/android-14/arch-x86 -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -L/home/codersun/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86 -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libsmart_cropper.so -o ../../../../build/intermediates/cmake/debug/obj/x86/libsmart_cropper.so CMakeFiles/smart_cropper.dir/src/main/cpp/Scanner.cpp.o CMakeFiles/smart_cropper.dir/src/main/cpp/smart_cropper.cpp.o CMakeFiles/smart_cropper.dir/src/main/cpp/android_utils.cpp.o ../../../../opencv/lib/x86/libopencv_imgproc.a ../../../../opencv/lib/x86/libopencv_core.a ../../../../opencv/lib/x86/libtbb.a /home/codersun/Android/Sdk/ndk-bundle/platforms/android-14/arch-x86/usr/lib/liblog.so /home/codersun/Android/Sdk/ndk-bundle/platforms/android-14/arch-x86/usr/lib/libjnigraphics.so -latomic -lm "/home/codersun/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86/libc++_static.a" "/home/codersun/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86/libc++abi.a" "/home/codersun/Android/Sdk/ndk-bundle/sources/cxx-stl/llvm-libc++/libs/x86/libandroid_support.a" && :
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int): error: undefined reference to 'std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const*, std::allocator const&)'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int): error: undefined reference to 'std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const*, std::allocator const&)'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int): error: undefined reference to 'std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const*, std::allocator const&)'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int): error: undefined reference to 'std::string::_Rep::_S_empty_rep_storage'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int): error: undefined reference to 'std::string::_Rep::_S_empty_rep_storage'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int): error: undefined reference to 'std::string::_Rep::_S_empty_rep_storage'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int): error: undefined reference to 'std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const*, std::allocator const&)'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int): error: undefined reference to 'std::string::_Rep::_S_empty_rep_storage'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int): error: undefined reference to 'std::string::_Rep::_M_destroy(std::allocator const&)'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int): error: undefined reference to 'std::string::_Rep::_M_destroy(std::allocator const&)'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int): error: undefined reference to 'std::string::_Rep::_M_destroy(std::allocator const&)'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int): error: undefined reference to 'std::string::_Rep::_M_destroy(std::allocator const&)'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function global constructors keyed to a: error: undefined reference to 'std::ios_base::Init::Init()'
../../../../opencv/lib/x86/libopencv_imgproc.a(imgwarp.cpp.o):/home/reports/.ccache/tmp/imgwarp.tmp.tegra-server.21155.ii:function global constructors keyed to a: error: undefined reference to 'std::ios_base::Init::~Init()'
../../../../opencv/lib/x86/libopencv_imgproc.a(smooth.cpp.o):/home/reports/.ccache/tmp/smooth.tmp.tegra-server.21209.ii:function std::vector<double, std::allocator >::_M_fill_insert(__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator > >, unsigned int, double const&): error: undefined reference to 'std::__throw_length_error(char const*)'
../../../../opencv/lib/x86/libopencv_imgproc.a(smooth.cpp.o):/home/reports/.ccache/tmp/smooth.tmp.tegra-server.21209.ii:function std::vector<int, std::allocator >::_M_fill_insert(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator > >, unsigned int, int const&): error: undefined reference to 'std::__throw_length_error(char const*)'
../../../../opencv/lib/x86/libopencv_imgproc.a(smooth.cpp.o):/home/reports/.ccache/tmp/smooth.tmp.tegra-server.21209.ii:function std::vector<float, std::allocator >::_M_fill_insert(__gnu_cxx::__normal_iterator<float*, std::vector<float, std::allocator > >, unsigned int, float const&): error: undefined reference to 'std::__throw_length_error(char const*)'
../../../../opencv/lib/x86/libopencv_imgproc.a(contours.cpp.o):/home/reports/.ccache/tmp/contours.tmp.tegra-server.21229.ii:function std::vector<CvSeqBlock, std::allocator >::_M_fill_insert(__gnu_cxx::__normal_iterator<CvSeqBlock*, std::vector<CvSeqBlock, std::allocator > >, unsigned int, CvSeqBlock const&): error: undefined reference to 'std::__throw_length_error(char const*)'
../../../../opencv/lib/x86/libopencv_imgproc.a(color.cpp.o):/home/reports/.ccache/tmp/color.tmp.tegra-server.21392.ii:function global constructors keyed to a: error: undefined reference to 'std::ios_base::Init::Init()'
../../../../opencv/lib/x86/libopencv_imgproc.a(color.cpp.o):/home/reports/.ccache/tmp/color.tmp.tegra-server.21392.ii:function global constructors keyed to a: error: undefined reference to 'std::ios_base::Init::~Init()'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int): error: undefined reference to 'std::basic_string<char, std::char_traits, std::allocator >::basic_string(std::string const&)'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int): error: undefined reference to 'std::basic_string<char, std::char_traits, std::allocator >::basic_string(std::string const&)'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::Exception::Exception(int, std::string const&, std::string const&, std::string const&, int): error: undefined reference to 'std::basic_string<char, std::char_traits, std::allocator >::basic_string(std::string const&)'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::Exception::formatMessage(): error: undefined reference to 'std::string::assign(std::string const&)'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::Exception::formatMessage(): error: undefined reference to 'std::string::assign(std::string const&)'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::getBuildInformation(): error: undefined reference to 'std::basic_string<char, std::char_traits, std::allocator >::~basic_string()'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::tempfile(char const*): error: undefined reference to 'std::string::assign(char const*, unsigned int)'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::tempfile(char const*): error: undefined reference to 'std::string::_M_leak_hard()'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::tempfile(char const*): error: undefined reference to 'std::string::append(char const*, unsigned int)'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::tempfile(char const*): error: undefined reference to 'std::string::append(char const*, unsigned int)'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::tempfile(char const*): error: undefined reference to 'std::string::assign(char const*, unsigned int)'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::tempfile(char const*): error: undefined reference to 'std::basic_string<char, std::char_traits, std::allocator >::basic_string(std::string const&)'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::tempfile(char const*): error: undefined reference to 'std::string::append(char const*, unsigned int)'
../../../../opencv/lib/x86/libopencv_core.a(system.cpp.o):/home/reports/.ccache/tmp/system.tmp.tegra-server.14466.ii:function cv::tempfile(char const*): error: undefined reference to 'std::string::append(char const*, unsigned int)'
../../../../opencv/lib/x86/libopencv_core.a(persistence.cpp.o):/home/reports/.ccache/tmp/persistenc.tmp.tegra-server.20920.ii:function cv::toUtf16(std::string const&): error: undefined reference to 'std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_S_empty_rep_storage'
../../../../opencv/lib/x86/libopencv_core.a(persistence.cpp.o):/home/reports/.ccache/tmp/persistenc.tmp.tegra-server.20920.ii:function cv::toUtf16(std::string const&): error: undefined reference to 'std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(wchar_t const*, std::allocator<wchar_t> const&)'
../../../../opencv/lib/x86/libopencv_core.a(persistence.cpp.o):/home/reports/.ccache/tmp/persistenc.tmp.tegra-server.20920.ii:function icvClose(CvFileStorage*, std::string*): error: undefined reference to 'std::string::_M_mutate(unsigned int, unsigned int, unsigned int)'
../../../../opencv/lib/x86/libopencv_core.a(persistence.cpp.o):/home/reports/.ccache/tmp/persistenc.tmp.tegra-server.20920.ii:function icvClose(CvFileStorage*, std::string*): error: undefined reference to 'std::string::resize(unsigned int, char)'
../../../../opencv/lib/x86/libopencv_core.a(persistence.cpp.o):/home/reports/.ccache/tmp/persistenc.tmp.tegra-server.20920.ii:function icvClose(CvFileStorage*, std::string*): error: undefined reference to 'std::string::_M_leak_hard()'
../../../../opencv/lib/x86/libopencv_core.a(persistence.cpp.o):/home/reports/.ccache/tmp/persistenc.tmp.tegra-server.20920.ii:function cv::FileStorage::releaseAndGetString(): error: undefined reference to 'std::string::reserve(unsigned int)'
../../../../opencv/lib/x86/libopencv_core.a(persistence.cpp.o):/home/reports/.ccache/tmp/persistenc.tmp.tegra-server.20920.ii:function cv::operator<<(cv::FileStorage&, std::string const&): error: undefined reference to 'std::string::assign(std::string const&)'
../../../../opencv/lib/x86/libopencv_core.a(persistence.cpp.o):/home/reports/.ccache/tmp/persistenc.tmp.tegra-server.20920.ii:function cv::operator<<(cv::FileStorage&, std::string const&): error: undefined reference to 'std::string::assign(std::string const&)'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function cv::gpu::error(char const*, char const*, int, char const*): error: undefined reference to 'std::cerr'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function cv::gpu::error(char const*, char const*, int, char const*): error: undefined reference to 'std::basic_ostream<char, std::char_traits >& std::__ostream_insert<char, std::char_traits >(std::basic_ostream<char, std::char_traits >&, char const*, int)'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function cv::gpu::error(char const*, char const*, int, char const*): error: undefined reference to 'std::basic_ostream<char, std::char_traits >& std::__ostream_insert<char, std::char_traits >(std::basic_ostream<char, std::char_traits >&, char const*, int)'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function cv::gpu::error(char const*, char const*, int, char const*): error: undefined reference to 'std::basic_ios<char, std::char_traits >::clear(std::_Ios_Iostate)'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function cv::gpu::error(char const*, char const*, int, char const*): error: undefined reference to 'std::basic_ostream<char, std::char_traits >& std::__ostream_insert<char, std::char_traits >(std::basic_ostream<char, std::char_traits >&, char const*, int)'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function cv::gpu::error(char const*, char const*, int, char const*): error: undefined reference to 'std::basic_ostream<char, std::char_traits >& std::__ostream_insert<char, std::char_traits >(std::basic_ostream<char, std::char_traits >&, char const*, int)'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function cv::gpu::error(char const*, char const*, int, char const*): error: undefined reference to 'std::basic_ios<char, std::char_traits >::clear(std::_Ios_Iostate)'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function cv::gpu::error(char const*, char const*, int, char const*): error: undefined reference to 'std::basic_ios<char, std::char_traits >::clear(std::_Ios_Iostate)'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function cv::gpu::error(char const*, char const*, int, char const*): error: undefined reference to 'std::basic_ios<char, std::char_traits >::clear(std::_Ios_Iostate)'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function cv::gpu::error(char const*, char const*, int, char const*): error: undefined reference to 'std::ostream::operator<<(int)'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function cv::gpu::error(char const*, char const*, int, char const*): error: undefined reference to 'std::ostream::flush()'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function global constructors keyed to a: error: undefined reference to 'std::ios_base::Init::Init()'
../../../../opencv/lib/x86/libopencv_core.a(gpumat.cpp.o):/home/reports/.ccache/tmp/gpumat.tmp.tegra-server.21044.ii:function global constructors keyed to a: error: undefined reference to 'std::ios_base::Init::~Init()'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::handle_perror(int, char const*): error: undefined reference to 'std::runtime_error::runtime_error(std::string const&)'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::invalid_argument::invalid_argument(std::string const&)'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::out_of_range::out_of_range(std::string const&)'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::range_error::range_error(std::string const&)'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::range_error::range_error(std::string const&)'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::runtime_error::runtime_error(std::string const&)'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::runtime_error::runtime_error(std::string const&)'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::runtime_error::runtime_error(std::string const&)'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::out_of_range::out_of_range(std::string const&)'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::out_of_range::out_of_range(std::string const&)'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::invalid_argument::invalid_argument(std::string const&)'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::length_error::length_error(std::string const&)'
../../../../opencv/lib/x86/libtbb.a(tbb_misc.cpp.o):/home/reports/.ccache/tmp/tbb_misc.tmp.tegra-server.14427.ii:function tbb::internal::throw_exception_v4(tbb::internal::exception_id): error: undefined reference to 'std::out_of_range::out_of_range(std::string const&)'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

README error

  1. 接入步骤中 compile 'com.github.pqpo:SmartCropper:V1.1.0@aar' 应该为
    compile 'com.github.pqpo:SmartCropper:v1.1.0@aar'

x86平台 so 文件编译

  • What went wrong:
    Execution failed for task ':smartcropperlib:externalNativeBuildRelease'.

Build command failed.
Error while executing process /sdk/cmake/3.6.4111459/bin/cmake with arguments {--build /SmartCropper/smartcropperlib/.externalNativeBuild/cmake/release/x86 --target smart_cropper}
[1/1] Linking CXX shared library
SmartCropper/jniLibs/x86/libsmart_cropper.so

在试编译x86时 出现了这个异常,请问如何解决?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.