Android opencv tutorial1相关问题

数据工程师——ETL 文章摘要 ETL(数据抽取、转换、加载)是数据处理的核心流程,负责将分散数据源整合为高质量数据。ETL与ELT的主要区别在于转换步骤顺序,分别适用于不同规模数据场景。数据仓库通过ETL从多个数据源集成数据,支持分析决策。维度建模中的事实表记录业务指标,维度表提供上下文信息。缓慢变化维度(SCD)处理随时间变化的维度数据,常见类型包括直接覆盖型、新增版本型等。数据清洗解决数据缺失、重复、错误等问题,确保数据质量。数据血缘记录数据流转路径,便于问题排查和影响分析。常用ETL工具如Kettle通过转换和作业实现数 阅读详情

一: 最近尝试把Opencv配置在安卓上,具体的配置网上有很多。配置成功后直接用android opencv sdk中的sample作了测试,我用的是里面的tutorial1。
适当修改tutorial1使得demo能从前置摄像头提取视频帧。但是修改后发现从前置摄像头得到的图像的方向不对,若想旋转90则可以通过矩阵转置变换transpose(src, dst)来实现,若想水平或者垂直旋转可以通过opencv的flip函数来实现图像方向的翻转。flip函数的官方api介绍如下

C++: void ocl::flip(const oclMat& src, oclMat& dst, int flipCode)
Parameters:
src – source image.
dst – destination image.
flipCode – specifies how to flip the array: 0 means flipping around the x-axis, positive (e.g., 1) means flipping around y-axis, and negative (e.g., -1) means flipping around both axes.
The function flip flips the array in one of three different ways (row and column indices are 0-based). Supports all data types.

由于此函数属于Core包,所以还需要import org.opencv.core.Core;

最后在onCameraFrame函数中就可以对帧进行翻转了。代码如下

    public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
        Mat srcImg = inputFrame.rgba();
        if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
        { // 竖屏
            // doSomrthing
            Core.flip(srcImg, srcImg, 0);//flip aroud Y-axis
        } else
        {
            // 横屏时dosomething
            Core.flip(srcImg, srcImg, 1);//flip aroud Y-axis
        }
        return srcImg;
    }

二:此外,若只想让Android屏幕横屏显示,可以在Manifest文件增加如下配置

android:screenOrientation="landscape"       android:configChanges="keyboardHidden|orientation"

增加后的完整Manifest文件为:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="**.**.**.**">

    <uses-sdk tools:overrideLibrary="org.opencv"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Tutorial1Activity"
            android:screenOrientation="landscape"
            android:configChanges="keyboardHidden|orientation" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    <supports-screens android:resizeable="true"
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:anyDensity="true" />

    <uses-permission android:name="android.permission.CAMERA"/>

    <uses-feature android:name="android.hardware.camera" android:required="false"/>
    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
    <uses-feature android:name="android.hardware.camera.front" android:required="false"/>
    <uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>

</manifest>

三: 若在AndroidManifest中没有强制设置app运行的屏幕方向,并想在代码中对横屏和竖屏分别进行处理。可以通过下面的代码来控制

if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
        { // 竖屏
            // doSomrthing
        } else
        {
            // 横屏时dosomething
        }

Configuration在android.content.res.Configuration包中。

四: 从摄像头拿到帧后把Mat转化为byte[]并对图像数据进行操作,操作后回显。可通过如下方式实现。

public Mat onCameraFrame(CvCameraViewFrame inputFrame) {

        Mat srcImg = inputFrame.rgba();
        int t = srcImg.channels();
        int width = srcImg.width();
        int height = srcImg.height();
        int rows = srcImg.rows();
        int cols = srcImg.cols();
        int imgSize = width*height*srcImg.channels();
        byte buff[] = new byte[imgSize];
        byte dstbuff[] = new byte[imgSize];

        srcImg.get(0, 0, buff); //获取srcImg中所有的像素
        //do whatever you want using buff
        srcImg.put(0, 0, dstbuff);//将buff放回原mat,完成对mat的修改操作
        return srcImg;
    }

Reference:
http://blog.youkuaiyun.com/wunghao8/article/details/38868281
http://blog.youkuaiyun.com/watkinsong/article/details/9189649
http://blog.youkuaiyun.com/yangtrees/article/details/38279351
http://my.oschina.net/u/1246663/blog/197626

Apache Paimon快照管理实战:如何避免Flink作业中的反压问题? 本文深入探讨了如何通过优化Apache Paimon的快照管理机制来避免Flink作业中的反压问题。详细解析了同步与异步快照过期模式的适用场景及配置建议,并提供了Checkpoint策略与状态后端的协同优化方案,帮助提升实时数据处理的性能和稳定性。 阅读详情

相关推荐

5分钟搞懂基因组规模代谢网络(GSMM):从数据库选择到模型构建全流程

本文详细解析基因组规模代谢网络(GSMM)构建的全流程,从数据库选择到模型优化。重点介绍MetaCyc、BiGG等主流数据库的黄金三角评估法则,对比自上而下与自下而上两种建模方法,并提供模型修剪、仿真优化的实用技巧与避坑指南,帮助研究者高效构建精准代谢网络模型。

weixin_30872157的博客 135

opevCV图像翻转(基于android)

Core.flip(src,src,0); Utils.matToBitmap(src, bitmap); 其中,Core.flip(src,src,0)函数三个参数分别为 输入图像,输出图像,flipcode 当flipcode>0,图像水平翻转; flipcode=0, 图像垂直翻转; flipcode<0, 图像水平垂直同时翻转 ...

bruce_zhao1407的博客 295

MultiOTP Credential Provider避坑指南:从安装到RDP双因素认证的全流程解析

本文详细解析了MultiOTP Credential Provider从安装到实现RDP双因素认证(MFA)的全流程,重点分享了Docker部署、Active Directory集成及网络级认证(NLA)兼容性等环节的实战避坑经验,旨在帮助运维人员高效、稳定地部署离线双因素认证方案,提升Windows远程桌面安全性。

weixin_29255731的博客 642

android opencv实现人脸检测 以及 年龄和性别识别

支持技术分享,转载或复制,请指出文章来源此博客作者为Jack__0023 1、背景 因为面对的场景不同,所以我上次使用 android 提供的人脸检测 已经不能满足我的使用,因为长时间开启,他会出现各种小状况,而且接下来要做识别(不在这篇博客讲,等我整理好资料后写出来测试没问题再发博客),所以投向opencv的怀抱。 bak:人脸检测 不是 人脸识别,检测的意思是 是不是人, 识别的意思是 你是谁。还有 年龄和性别识别 要实现的话,必须是opencv3.3版本或以上,因为只有这个版本或以上才支持CNN

zjy764219923的专栏 2185

WSL子系统启动报错 Wsl/Service/CreateInstance/CreateVm/HCS_E_SERVICE_NOT_AVAILABLE

WSL子系统启动报错 :Wsl/Service/CreateInstance/CreateVm/HCS_E_SERVICE_NOT_AVAILABLE 于是分析原因,最终发现是Windows功能中的虚拟机平台功能不知道什么时候被取消了。

Linux I Tell U 6万+

gtsam 学习十(ISAM2 理论)

翻译自:iSAM2: Incremental Smoothing and Mapping Using the Bayes Tree 摘要 提出了一种新型的贝斯树处理稀疏矩阵,在转化为因子图,可以更好的求解平方根信息和映射问题。 文中提出了三个概念 使用概率密度项进行矩阵分解 介绍如何将矩阵分解转换为贝叶斯数和条件概率密度 基于贝叶斯树提供了一种新的系数非线性优化:ISAM2(进行重新排序和重新线性化,避免了批量更新) 问题描述 文章聚焦与如何用增量实时解决非线性问题, 利用增量即新的测量值实时更新估

weixin_37781153的博客 8407

android opencv 平移,Android中使用Opencv自带JavaCameraView实现高帧率竖屏显示

最近学习openCv在android中的使用,首先就是拿官方的demo进行学习,在使用OpenCv自带的JavaCameraView中,发现在竖屏状态下相机的显示是横屏显示的,本来以为这个问题很好解决,但是后期为了调节到最高帧率还是花了很多心思!对于相机为何会横屏显示,因为获取系统camera的帧数据就是横屏的,OpenCv并没有给我们经过处理。传统我们使用SurfaceView获取系统相机是如下...

weixin_42511053的博客 792

HFSS实战项目——GPS北斗双模微带天线

本文设计了一款方形圆极化微带天线应用于北斗B1和GPSL1频段,满足高增益、低VSWR、适当方向图等要求。设计中心频率为1568MHz,介质板采用厚度h=1.6mm的Arlon AD450(tm)板,相对介电常数为4.5,采用探针馈电。

2401_87464239的博客 1767

yolov5-pytorch模型转onnx模型再转tensorflow savedmode模型进行tfserving部署

pytorch框架下的yolov5模型部署到tensorflow serving,需要将pytorch的pt模型转换为onnx模型,再将onnx模型转换为tfserving的savedmode模型。 1. pytorch的pt模型转onnx模型 使用yolov5中自带的 export.py 脚本(在models下)可以将模型导出为 TorchScript, ONNX, CoreML。 环境: yolov5-5.0的requirements.txt dependencies, including Python

qq_36756866的博客 4460

手把手教程 | 使用 apktool 修改已发布 APK 的版本号与版本名称

摘要:本文介绍如何使用apktool工具直接修改APK版本信息,适用于版本回滚、多版本测试等场景。详细步骤包括反编译APK、修改版本号、重打包、对齐优化和重新签名,并分享了反编译相关实用知识。该方法无需源代码参与,但需注意修改后的APK必须重新签名才能安装。最后强调应在合法范围内使用反编译技术。

学无止境 826

uni-app - 刘海屏(Iphone X)底部横杠(——)白色区域块(安全距离处更改颜色)解决方案

场景:因为要做无tabbar页面,所以在配置文件中取消底部导航栏。取消后,iPhoneX(刘海屏)底部就出现如下图所示白色安全区域问题:这个问题,是因为uni-app默认会为iPhoneX(刘海屏)留出安全距离,这个安全距离的背景色就是白色。所以,如果你将页面颜色设置为其他颜色,就会与默认白色冲突。有2个不同的解决方案(原生占位),虽然原理是一样,但使用的场景不同,请根据您的需求来采纳。

🏆 前端领域优质创作者 1万+

OpenCV Tutorial 1 - Chapters 1 and 2

之前对一个opencv教程进行了翻译,现在贴出来和大家一起分享,希望对大家opencv的学习有所帮助。 Author(作者): Noah Kuntz (2008) Contact(连接): nk752@drexel.edu Keywords: OpenCV, compu

笑对挫折 921

AD9361功能介绍和使用

AD9361使用分数分频锁相环(PLL)来产生发射机和接收机本地振荡器(LO)频率和BB PLL。BB PLL 可用于数据转换、数字滤波器和 |/O 端口。PLL的参考时钟可以由外部振荡器或外部晶体(XO)和数字可编程片内可变电容提供,电容微调产生参考时钟频率,XO和微调电容的组合统称为DCXO。有多个天线输入的分集系统。接收链数据首先经过低噪声放大器(LNA),然后是同相(1)和正交(Q)放大器,混频器和频带整形滤波器,可将接收到的信号下变频为基带以进行数字化。时分双工(TDD)和频分双工(FDD)。。。

wangjie36的博客 1万+

【代码解析】opencv 安卓 SDK sample - 1 - HDR image

本文回顾了Android开发中OpenCV的基础使用,重点解析了一个摄像头处理Activity的实现。主要内容包括: 基础结构:通过继承CameraActivity并实现CvCameraViewListener2接口构建摄像头处理框架 生命周期管理:详细说明了onCreate、onResume、onPause等关键方法的作用 OpenCV集成:展示OpenCV库的初始化过程和图像处理回调机制 核心功能:包含拍照按钮实现、HDR拍摄逻辑和图像处理流程 开发要点:强调了日志记录、内存管理、权限处理等Androi

prinTao的博客 1169

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OpenCV 4 Android 开发环境搭建全指南:SDK/NDK 配置、官方示例运行与真机调试

本指南面向希望在 Android 平台上使用 OpenCV 的开发者,系统讲解从零搭建 Android 开发环境、安装 OpenCV for Android SDK、在模拟器或真机上运行 OpenCV 官方示例,以及处理 Windows / Linux / macOS 三大宿主系统真机调试问题的完整流程。读完本文,你将掌握一套经过 Ubuntu 22.04 与 Windows 10 验证的、可直接

gitblog_01123的博客 394

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

opencv sample导入到Android studio(tutorial部分)

opencv sample导入到Android studio(tutorial部分)本人初学opencv ,需要植入到Android中,想让opencv samples里的全部转移到Android studio中工作。可事实上,opencv sample中包含的,全部都是在eclipse的工作环境下。自己贸然导入到Android studio,出现了各种无法解决的错误。度娘了半天没有解决,折腾了两个

etcxyf的博客 880

OpenCV for Android 开发实战:二进制 SDK 集成、Maven Central 依赖与相机预览全流程指南

本教程面向希望把 OpenCV 能力接入 Android 项目的开发者,围绕 OpenCV 官方 Android 二进制包,系统讲解两种项目集成方式——本地 SDK 模块导入与 Maven Central 自动依赖,并最终落地为一个完整的相机预览 Demo。文末结合 OpenCV 仓库内 Android Java 层源码,剖析 `JavaCameraView`、`CameraBridgeViewB

gitblog_00086的博客 418

OpenCV4Android SDK sample运行中ndk-build not found in PATH的错误解决

按照http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html 的步骤一步一步安装下来,一切都正常,就是最后在OpenCV Sample-face-detection和OpenCV Tutorial 2两个实例中出现了如下图所示的错误。在试了几种不同的方法后.终于解决. 如教程中所说

Debutent的专栏 3485

opencv_tutorial_code学习——compareHist直方图比较

tutorial_code\Histograms_Matching\compareHist_Demo.cpp 结果数值的意义:https://www.cnblogs.com/tornadomeet/archive/2012/05/03/2480824.html compareHist()的使用方法:http://blog.youkuaiyun.com/qq_23880193/article/details

LHHopencv的博客 902

opencv中findcontour异常

调试OpenCV自带的例子代码: C:\OpenCV31\opencv\sources\samples\cpp\tutorial_code\ShapeDescriptors\findContours_demo.cpp

It is me 的博客 221

Android NDK 开发方面的书籍

Java数字图像处理:编程技巧与应用实践(这本先看(主要为图像算法), 下面那本OpenCV Android后看(主要算法的在android的 应用))。 包邮OpenCV Android开发实战 贾志刚 智能系统与技术丛书 NDK 核心模块 图像处理书 这一本书介绍基于NDK的人脸美颜开发的;(下面两本没有了) 推荐网上的两篇tutorial,英文的,但是讲的比较全面。(下面这两本网上...

疾风剑豪 2251

android 预览回调,java – Android:如何用回调显示相机预览?

我正在处理完全相同的问题,但还没有达到相同的程度.您是否考虑过将像素直接绘制到画布上,而不是先将其编码为JPEG?在OpenCV套件http://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.3.1/OpenCV-2.3.1-android-bin.tar.bz2/download中(实际上并不使用opencv;不要担心...

weixin_39761422的博客 277

OpenCV 扩展模块 dnn_objdetect 实战:基于 SqueezeNet / SqueezeDet 的 CNN 图像分类与目标检测

本文围绕 opencv_contrib 中 `dnn_objdetect` 模块的模型数据文件展开,完整讲解仓库内随附的 SqueezeNet(ImageNet 图像分类)与 SqueezeDet(PASCAL VOC 目标检测)两套 Caffe 模型的定义、训练背景、部署流程与后处理原理。读完本文,你将掌握如何用 OpenCV DNN 模块加载这两套模型,运行官方示例完成单张图像的分类与多目标框

gitblog_00216的博客 937

OpenCV Java 桌面端开发实战:从源码构建 Java 绑定,到用 Ant / SBT 编写首个 Java 与 Scala 应用

本指南以当前 OpenCV 仓库为对象,完整讲解桌面版 Java 开发的四条主线:OpenCV Java 绑定在仓库中的真实构成、如何获取一份带桌面 Java 支持的 OpenCV、如何使用 Apache Ant 编写经典 Java 示例、以及如何使用 SBT 构建 Java/Scala 应用并跑通一个"载入图片 → 人脸检测 → 标注 → 写出结果"的完整示例。读完你不仅能从源码级理解 `ope

gitblog_01065的博客 324

python-opencv Tutorials 一码人学习笔记(1)介绍

OpenCV OpenCV于1999年由加里布拉德斯基在英特尔公司创立,第一个版本于2000年发布。瓦迪姆皮萨列夫斯基加入了加里布拉德斯基,负责管理英特尔的俄罗斯软件OpenCV团队。2005年,OpenCV被用于斯坦利,这是2005年DARPA大挑战赛的冠军。后来,在Willow Garage公司的支持下,该公司的积极发展仍在继续,加里布拉德斯基和瓦迪姆皮萨列夫斯基领导了这个项目。OpenCV...

qq_41905045的博客 481

直接拿来用!最火的Android开源项目(三,完结篇)

易于使用API高度优化最小内存消耗FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了目前领先的音/视频编码库libavcodec。FFmpeg是在Linux下开发出来的,但它可以在包括Windows在内的大多数操作系统中编译。可以轻易地实现多种视频格式之间的相互转换。而FFmpeg for Android则是可通过Android NDK直接在Android源码环境下编译的FFmpeg库。

2401_84558590的博客 725

OpenCV 人脸识别实战指南:FaceRecognizer 的 Eigenfaces / Fisherfaces / LBPH 三大经典算法原理与完整示例

本指南以 opencv_contrib 仓库中 `modules/face` 模块的官方人脸识别教程([face_tutorial.markdown](https://link.gitcode.com/i/cecba1c819e162eb671f7d201fa3fa38))为核心,系统讲解 OpenCV `FaceRecognizer` 框架下三大经典人脸识别算法——Eigenfaces、Fish

gitblog_00587的博客 537
上一篇: Android NDK开发生成.so/.a库
下一篇: iOS开发问题总结
IT修道者
IT修道者 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄17年 326粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值