具体代码请看:NDKPractice项目的opencv62
1. opencv 的用处
- 提高图片的视觉,图片变换效果
- 提取图像的特征,用来分析
- 图像识别,直播,人脸,指纹,二维码,汽车牌照识别
2. Bitmap 的解封装与编解码
你给一个错误地址,或者给一个文本地址,Glide 是如何判断图片格式,是否错误之类的呢?
根据流读出来的头几个字节判断格式
。
先说下 PNG、JPEG、WEBP 区别
:PNG (无损压缩),JPEG(有损压缩),WEBP 区别? 有损压缩和无损压缩
面试中常问问题:WEBP
有什么好处? :
存储空间更小还原度更高
,- 版本区别:支持 4.0 开始支持,4.2 正式没有问题(alpha颜色通道)
3. 逆世界效果
用图片说下原理:
代码:
1 | Java_com_east_opencv62_NDKBitmapUtils_againstWorld(JNIEnv *env, jclass clazz, jobject bitmap) { |
4.浮雕效果
1 | Java_com_east_opencv62_NDKBitmapUtils_anaglyph(JNIEnv *env, jclass clazz, jobject bitmap) { |
5.马赛克
1 | Java_com_east_opencv62_NDKBitmapUtils_mosaic(JNIEnv *env, jclass clazz, jobject bitmap) { |
6.毛玻璃效果
1 | Java_com_east_opencv62_NDKBitmapUtils_groundGlass(JNIEnv *env, jclass clazz, jobject bitmap) { |
7. 油画特效效果
注意:下面的size 越大效果越明显,但是计算速度越慢
1 | Java_com_east_opencv62_NDKBitmapUtils_oilPainting(JNIEnv *env, jclass clazz, jobject bitmap) { |
8. 处理速度性能优化
运算速度:位运算 > +- > */ 。 int > float