SmartCropper

智能图片裁剪框架
授权协议 Apache-2.0
开发语言 Java
所属分类 神经网络/人工智能、 计算机视觉库/人脸识别
软件类型 开源软件
地区 国产
投 递 者 段干宏硕
操作系统 Android
开源组织
适用人群 未知
 软件概览

SmartCropper 是简单易用的智能图片裁剪库,适用于身份证,名片,文档等照片的裁剪。

支持特性

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

优化智能选区算法(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 层,运行时间与图片大小成正比,在大图片的情况下,可以考虑在子线程执行,或者压缩传入的图片。

 相关资料
  • 本文向大家介绍iOS实现裁剪框和图片剪裁功能,包括了iOS实现裁剪框和图片剪裁功能的使用技巧和注意事项,需要的朋友参考一下 图片处理中经常用的图片剪裁,就是通过剪裁框确定图片剪裁的区域,然后剪去该区域的图片,今天实现了一下,其实图片剪裁本身不难,主要剪裁框封装发了点时间,主要功能可以拖动四个角缩放,但不能超出父视图,拖动四个边单方向缩放,不能超出父视图,拖动中间部分单单移动,不改变大小,不能超出父

  • 问题内容: 我想用PHP裁剪图像并保存文件。我知道您应该使用GD库,但我不确定如何使用。有任何想法吗? 谢谢 问题答案: 您可以用来裁剪图像的必需部分。该命令如下所示: 来自PHP.net的代码- 从源图像中裁剪出一个80x40像素的图像

  • 函数名称:裁剪图片 函数功能: 从图片对象截取部分新建拷贝图片对象 函数方法 img = image.crop(img1,x1,y1,x2,y2) 参数 类型 必填 说明 img1 userdata 是 需要操作的图片对象 x1 number 是 截取图片对象左上角的横坐标 y1 number 是 截取图片对象左上角的纵坐标 x2 number 是 截取图片对象右下角的横坐标 y2 number

  • 本文向大家介绍Android实现图片区域裁剪功能,包括了Android实现图片区域裁剪功能的使用技巧和注意事项,需要的朋友参考一下 今天做的就是关于实现图片的区域裁剪功能。由于项目功能的需要笔者需要实现PDF文档的阅读,并且就某个页面实现“图片”裁剪(一个页面理解为一张图片)。笔者对着方面是一点儿也不熟悉,因此就得上网查资料了。之后笔者找到了Android可以通过调用系统相册、拍照实现图片的裁剪、

  • 我试图在从图库中选择图像后使用intent来裁剪图像。以下是我的代码片段 在这里,我使用PICK_IMAGE_REQUEST意图句柄调用上面的代码段 由于我在裁剪后使用了相同的意图,即PICK_IMAGE_REQUEST,可能会出现什么问题

  • 本文向大家介绍Android实现拍照、选择图片并裁剪图片功能,包括了Android实现拍照、选择图片并裁剪图片功能的使用技巧和注意事项,需要的朋友参考一下 一、 实现拍照、选择图片并裁剪图片效果 按照之前博客的风格,首先看下实现效果。      二、 uCrop项目应用 想起之前看到的Yalantis/uCrop效果比较绚,但是研究源码之后发现在定制界面方面还是有一点的限制,于是在它的基础上做了修

  • 本文向大家介绍Python基于tkinter canvas实现图片裁剪功能,包括了Python基于tkinter canvas实现图片裁剪功能的使用技巧和注意事项,需要的朋友参考一下 实现:tkinter 画布上显示图片,按下鼠标左键并且移动,实现截图 代码如下 原图one.png 运行 one_corp.png 源码(https://github.com/rainbow-tan/rainbow/

  • 本文向大家介绍WEB前端实现裁剪上传图片功能,包括了WEB前端实现裁剪上传图片功能的使用技巧和注意事项,需要的朋友参考一下 最后的效果如下: 这里面有几个功能,第一个是支持拖拽,第二个压缩,第三个是裁剪编辑,第四个是上传和上传进度显示,下面依次介绍每个功能的实现: 1. 拖拽显示图片 拖拽读取的功能主要是要兼听html5的drag事件,这个没什么好说的,查查api就知道怎么做了,主要在于怎么读取用