首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我为什么要写《OpenCV Android 开发实战》这本书

2015年我出版了个人第一本关于图像处理方面的书籍《Java图像处理-编程技巧与应用实践》,这本书主要是从理论与编码上面详细阐述了图像处理基础算法以及它们在编码实现上的技巧。...一转眼已经三年过去了,在这三年的时光里我无时无刻都在关注图像处理与计算机视觉技术发展与未来,同时渐渐萌发了再写一本图像处理相关技术书籍的念头,因为《Java图像处理-编程技巧与应用实践》一书主要不是针对工程应用场景...提高OCR识别率 - 8.4.1 训练自定义数据 (讲述在Tesseract-OCR如何训练自定义数据) - 8.4.2 图像预处理(讲述如何通过OpenCV...实现偏斜校正、噪声干扰去除,边线去除,来减低干扰,提高识别率) 8.5小结 (总结本章所讲内容) 第9章 人脸美颜 9.1 积分图计算(介绍图像积分图算法) 9.2...基于积分图像的局部均方差滤波(详细介绍在OpenCV如何实现自己的算法) 9.3 遮罩层生成(详细讲解与代码演示实现,) 9.4 高斯权重融合(详细讲解与代码演示实现)

1.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android实现双目测距

    前言 在上一章我们介绍了《双目摄像头测量距离》,在这个基础上,我们来了解如何Android上使用双目测距算法。...通过本教程,你不仅掌握如何Android中使用SBM等双目测距算法,顺便也了解到如何Android Studio配置OpenCV,通过使用OpenCV可以在Android中实现很多图像处理的功能。...配置OpenCV 下载OpenCVAndroid版本源码,官网下载地址:https://opencv.org/releases/,如果读者无法下载,笔者也提供的源码下载,版本是3.4.1的,下载地址:...1、创建一个Android项目,解压源码压缩包,在Android Studio中点击File--->Import Model,然后浏览解压后的sdk/java添加,如下图所示,如何正常的话会显示OpenCV...在MainActivity.java中,简单几步就完成了双目测距,在使用OpenCV之前一定要执行OpenCVLoader.initDebug(),然后读取assets文件夹中的图像,分别是是左右目拍摄保存的图像

    2.5K10

    Android实现双目测距

    我们来了解如何Android上使用双目测距算法。...通过本教程,你不仅掌握如何Android中使用SBM等双目测距算法,顺便也了解到如何Android Studio配置OpenCV,通过使用OpenCV可以在Android中实现很多图像处理的功能。...配置OpenCV 下载OpenCVAndroid版本源码,官网下载地址:https://opencv.org/releases/,如果读者无法下载,笔者也提供的源码下载,版本是3.4.1的,下载地址:...1、创建一个Android项目,解压源码压缩包,在Android Studio中点击File—>Import Model,然后浏览解压后的sdk/java添加,如下图所示,如何正常的话会显示OpenCV...在MainActivity.java中,简单几步就完成了双目测距,在使用OpenCV之前一定要执行OpenCVLoader.initDebug(),然后读取assets文件夹中的图像,分别是是左右目拍摄保存的图像

    1.1K20

    OpenCV 安卓编程示例:1~6 全

    一、准备就绪 在本章中,我将逐步介绍如何开始使用 OpenCV 开发具有视觉感知的 Android 应用。...二、应用 1-建立自己的暗室 在本章中,您将学习如何OpenCV 中存储和表示图像,以及如何利用这种表示来实现有趣的算法,这些算法将增强图像的外观。...由于 OpenCV 的主要重点是处理和操纵图像,因此您需要了解的第一件事是 OpenCV 如何存储和处理图像。...您将学习如何减少图像噪声,也称为图像平滑。 此外,您还将了解使用 OpenCV 中实现的具有高度抽象性的不同算法检测图像边缘(对象边界)的过程。...对于像素对采样方法,ORB 离线学习了如何选择像素对,以最大程度地提高方差并减小相关性,以便每个选择的像素都向描述符添加新信息。

    5.7K10

    OpenCVAndroid 上的应用

    在移动端上使用 OpenCV 可以完成一系列图像处理的工作。 二. OpenCVAndroid 上的配置 我在项目中使用的 OpenCV 版本是 4.x。...在 Android Studio 中创建一个 Library,将官网下载的 OpenCV 导入后,就可以直接调用 OpenCVJava 类的方法。...其中,maxFilter() 是为了处理彩色的情况,然后使用高斯滤波进行降噪处理,再进行二值化处理,最后判断灰度差异区域占总图像的比列是否超过预先设定的阈值。...总结 OpenCV 是一款功能强大的图像处理库。但是它本身体积也较大,在移动端使用至少会增加 Android Apk 包 10 M+ 的体积(主要取决于 App 要支持多少个 CPU 架构)。...在 SDK 中使用 OpenCV 的确会给业务方造成困扰,未来也会考虑如何减少 SDK 的体积,以及把 SDK 做成模块化。

    2.2K10

    使用计算机视觉实战项目精通 OpenCV:1~5

    本章将解释如何从头开始创建桌面应用,以及如何从一个 OpenCV Android 示例项目中创建 Android 应用。...设置一个使用 OpenCVAndroid 项目 Android OpenCV 的端口每年都会发生很大变化,Android 的摄像头访问方法也是如此,因此,本书并不是描述如何设置的最佳地方。...OpenCV 的imwrite() Java 函数可用于保存到 PNG 文件,但这将需要链接到 OpenCVJava API 和 OpenCV 的 C/C++ API(就像 OpenCV4Android...由于我们不需要 OpenCV Java API,因此以下代码将仅显示如何使用 Android API 而非 OpenCV Java API 保存 PNG 文件: Android 的Bitmap类可以将文件保存为...使用 OpenCV4Android 所需的步骤会定期更改,并且 Android 开发本身不是静态的; 因此,本章将介绍如何通过向 OpenCV 示例项目之一添加功能来构建 Android 应用。

    2.2K10

    Android CameraX NDK OpenCV(二)-- 实现Dnn人脸检测

    前言 上一篇《Android CameraX NDK OpenCV(一)--实时灰度图预览》已经把AndroidOpenCV的Ndk配置完成,并且实现了实时灰度图的显示,本篇来看看在Android下使用...实现效果 ?...GIF动图 视频效果 划重点 从上面的效果很仔细的话可以看到,我们检测人脸到画上红色矩形框时偶尔会有延时的情况,这个在《Android JetPack组件CameraX使用及修改显示图像》中说过,我们在摄像机预览中上层加入了...NDK中调用 extern "C" JNIEXPORT jboolean JNICALL Java_lib_vaccae_opencv_OpenCVJNI_initFaceDetector(JNIEnv...(je, "Unknown exception in JNI code {nMatToBitmap}"); } } extern "C" JNIEXPORT jobject JNICALL Java_lib_vaccae_opencv_OpenCVJNI_facedetector

    1.7K40

    C++ OpenCV Contrib模块LBF人脸特征点检测

    前言 《OpenCV源码Android端编译,用时三天,我编了个寂寞。。。》...文中介绍了编译OpenCV+Contrib模块的编译,虽然Andorid下编译始终没有获得libopencv_java4.so的库,不过在Windows下编译还是正常的,今天主要介绍人脸特征点的检测功能...实现效果 ? 上面的GIF图中可以看出来,除了第一张多人里面有侧脸的,检测特征点时有点差,基本检测的都还挺不错。文章最后有Demo的GitHub源码地址。...实现方式 # 思路 1 加载OpenCV DNN和FacemarkLBF的模型(FacemarkLBF在OpenCVr的Contrib模块中) 2 使用DNN人脸检测获取图像中所有人脸的矩形框 3 调用...使用VS2019编译的OpenCV及Contrib模块的源码后,生成的dll的动态库是VC16了,不是原来的VC15,而且在Debug和Relese都编译了一遍(用处就在正式环境中速度会提高接近10倍)

    91330

    Android Ndk and Opencv Development 3

    OpenCVAndroid NDK开发的总结 3.如何使用Android中的摄像头,常见的问题有哪些?...具体总结如下: _利用OpenCV实现在Android系统下的人脸检测 本文主要介绍了如何在底层通过OpenCV来对人脸部分进行检测,得到的人脸位置数据通过JNI传递给Java层,详细介绍了其中的JNI.../ Native developer (2) OpenCV4Android目前的局限性,以及开发过程中对于提高性能和开发效率需要注意的事项 _Introduction to OpenCV for Android...Camera的话,是使用Java调用摄像头还是Native调用摄像头; 最后,图片如何进行传递,如果是单张静态图片进行处理的话,只需要路径就行了,但是如果是在视频状态下对图片进行处理的话,那么就只能传递图像数据了...,这里涉及到了Android如何获取预览的图像数据以及如何将其传递到底层,又如何进行转换(一般是YUV转成RGB)使得OpenCV可以进行处理,处理完了之后,又如何将处理得到的图片传递给Java层。

    1.2K20

    人体肤色检测:100 行 Python 实现

    OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上....本文主要使用了OpenCV图像色域转换, 颜色通道分割, 高斯滤波, OSTU自动阈值等功能。 参考资料 OpenCV探索之路:皮肤检测技术; 学习OpenCV—肤色检测。...img = cv2.imread(imname, cv2.IMREAD_COLOR)'''imread函数的第一个参数是要打开的图像的名称(带路径)第二个参数是告诉函数应该如何读取这幅图片....该方法的原理也很简单: 将RGB图像转换到 YCrCb 颜色空间,提取 Cr 分量图像 对 Cr 分量进行高斯滤波 对Cr做自二值化阈值分割处理 OSTU 法 关于高斯滤波 使用低通滤波器可以达到图像模糊的目的...cr1 = cv2.GaussianBlur(cr, (5, 5), 0) # 对cr通道分量进行高斯滤波# 根据OTSU算法求图像阈值, 对图像进行二值化_, skin1 = cv2.threshold

    67420

    Android Ndk and Opencv Development 4

    4.配置OpenCV环境 ①下载OpenCV for Android,虚拟机中使用的是2.4.4版本 ②下载之后解压即可,解压路径为/home/xface/android/opencv_sdk 5.配置...⑤为了提高编写代码的速度,打开window->preferences,找到左侧Java->Editor->Content Assist,在Auto activation triggers for Java...下面介绍如何将这两个项目导入到Eclipse开发环境中,并在手机上运行。 1.运行Eclipse,选择File->Import......,在弹出的窗口中选中步骤1中添加的OpenCV Library - 2.4.4项目即可,效果如下图所示: ? 3.至此,开发环境搭建和项目导入部分都完成了,下面可以进行XFace程序了。...,那么这个线程便会取出其灰度图像传入到JNI层进行人脸识别操作,并将结果显示出来,此处消息的传递方式使用的是Android中的Handler机制。

    82720

    OpenCV 入门教程:自适应阈值处理

    OpenCV 入门教程:自适应阈值处理 导语 自适应阈值处理是图像处理中常用的技术之一,它能够根据图像的局部特征自动调整阈值,从而提高图像的处理效果。...在 OpenCV 中,自适应阈值处理可以有效处理光照不均匀、背景复杂等情况下的图像。本文将以自适应阈值处理为中心,为你介绍使用 OpenCV 进行自适应阈值处理的基本步骤和实例。...总结 通过本文的介绍,你已经了解了使用 OpenCV 进行自适应阈值处理的基本步骤。...自适应阈值处理是图像处理中常用的技术之一,可以应对光照不均匀、背景复杂等情况下的图像处理需求。通过调整阈值计算方法、邻域大小和常数等参数,你可以根据实际需求得到所需的二值图像效果。...祝你在使用 OpenCV 进行自适应阈值处理的过程中取得成功!

    80820

    OpenCV 4.6 Android SDK 目录详解

    基于当前最新opencv-4.6.0-android-sdk 版进行的介绍。 2. SDK 主要介绍大功能和目录,一些Android Studio或者配置文件就不进行介绍了。...我们可以通过导入到Android Studio中进行编译成App了解具体的功能作用。 15-puzzle:15个拼图实例,展示了如何通过OpenCV来实现一个简单的游戏。...(上面api都是通过Core 或 Imgproc类进行调用) tutorial-1-camerapreview:相机预览实例,介绍了如何使用OpenCV实现相机调用和预览显示。...tutorial-3-cameracontrol:摄像头控制实例,介绍了基于OpenCV实现摄像头的基本操作,可以更改相机预览分辨率,调用相机内置效果,拍摄和保存图片,等一些相机的操作。...(我们使用SDK时并不会用上) java java版本api信息 android:一些基于Android的配置,例如自定义JavaCamera2View,Util工具(Bitmap与mat互转),OpenCVLoader

    45540

    C++ OpenCV检测并提取数字华容道棋盘

    前言 一直关注我的朋友应该知道前段时间使用OpenCV做了数字华容道的游戏及AI自动解题,相关文章《整活!我是如何OpenCV做了数字华容道游戏!...Q1 如何实现图像读取数字华容道棋盘生成棋局? 虽然这是一个问题,不过要完成实现需要两个操作,就是定位棋盘和数字识别,那具体应该怎么实现呢?...微卡智享 01 图像预处理后进行边缘检测 通常进行边缘检测时直接使用Canny边缘检测,因为检测速度也快,《C++ OpenCV使用大津法求自适应阈值》篇中也说过使用大津法求的自适应阈值,开始也是这样用的...,后来发现为了检测的效果更好一些,这里采用了把图像R,G,B层分开边缘检测,然后再把三个分开的图像做与操作,最后出来的图像再做处理。...透视变换后的图像效果 ? 最后在提取出透视变换后我们实际需要的部分 ? 未检测成功的情况 提取的方法这样就说完了,从上面的动图中可以看到,不是所有的图像都提取出来,例如: ?

    1K20

    OpenCv-Python 开源计算机视觉库 (一)

    OpenCV 支持众多主流编程语言,如:C++,Python,Java 等,可在不同的平台上使用,包括 Windows,Linux,OS X,Android 和 iOS。...功能概览 GUI支持: 显示和保存图片和视频,控制鼠标事件和跟踪栏 核心运算:图片像素编辑,对图像执行算术运算,性能优化 图像处理:颜色空间变化,几何变换,图像阈值,平滑处理,渐变,边缘检测,融合,轮廓线...:图像去噪,图像复原,HDR 目标检测:人脸识别 5....cv.imwrite('dog_gray.png', img_gray) True 我们已经知道如何使用 opencv-python 打开,显示,保存图片,那么综合应用起来,可以做一个完整的小程序。...) cv.destroyAllWindows() 5.2 视频捕获,播放,保存 5.2.1 捕获实时视频流 从笔记本电脑内置摄像头,捕获实时视频流(一张张图片),并显示经过灰度处理后的视频帧,效果就是经过灰度处理后的视频

    2.3K10

    计算机视觉 OpenCV Android | 特征检测与匹配之角点检测——Harris角点检测与Shi-Tomasi角点检测

    ---- 引子 前面两章笔记(图像操作、基本特征检测) 主要讲述了OpenCV图像处理模块的主要知识与API使用; 本章的笔记记录OpenCV中另外一个重要模块——feature2d模块, 该模块的主要功能是检测图像的特征...本文首先笔记如何提取图像的角点特征。 1 Harris角点检测 关于角点特征提取最经典的算法之一就是Harris角点检测。...上述程序首先把彩色RGB图像转换为单通道灰度图像, 然后使用Harris角点检测函数完成各个像素点上角点响应值的计算, 最后使用阈值过滤绘制那些响应值R比较大的像素点(角点)。...本章完整代码在文末GitHub里边的Feature2dMainActivity.java文件中,后续对此不再说明。...---- 参考材料 《OpenCV Android 开发实战》(贾志刚 著) 关于《OpenCV Android 开发实战》作者的GitHub项目 笔者基于作者GitHub维护的APP

    1.2K30

    一个人单挑滴滴Android开发团队?

    觉得包太大的同学可以自己把不需要的 .so 指令集删掉,主要是做识别的 OpenCV4Android.so 包比较大,其次是百度地图的包。...开发环境 1.Android端:Android Studio 版本3.4, 百度地图LBS 版本5.3 , OpenCV4Android 版本3.2 2.服务器端:Apache + PHP + MySQL...引导界面 先看下真机上的效果: ?...上图中MD5 C语言文件下面还有一个native-lib.cpp 文件,是NDK 在 Android studio 里帮助我们生成的。它可以认为是Java方法调用C语言方法的桥梁。...库,就好像 C++可以调用 .dll 动态链接库一样,后面紧跟的是函数名,命名规则很重要:Java_ + 包名 + 调用这个加密算法的Java工具类名 + Java调用方法 ,后面的变量参数是Java

    1.8K51
    领券