0、vscode+python+opencv环境配置
安装python对于安装python,如果是新手,首次接触python,建议直接去官网下载对应的版本安装。如果是老手,熟悉python及其环境,建议使用 Anaconda 去控制安装,这个工具可以管理多个版本的python,方便随时切换使用。
官网安装直接浏览器打开官网地址:Download Python | Python.org
如果你想用最新版本,直接点击上图黄色按钮 Download Python 3.11.3 下载安装即可。
我这里用的是 3.10.10 版本,所以要将页面向下拉点点,就可以看到:点击 Download 下载安装即可。安装过程选项直接默认。如果你需要修改安装位置,在这个过程中会有提示,换成自己想安装的盘符位置即可。安装完成之后,记得修改环境变量,将python添加到环境变量(这个如果不会,麻烦找度娘)。
Anaconda安装这个安装稍微有点麻烦,这里就不讲了,可以参照我另外篇文章:Pytorch安装之Anaconda安装 | Jona’s Blog (huanyuan.mobi)
安装opencv
如果是直接安装的python,那么使用 pip install ...
Android OpenGL学习入门:曲棍球2
这边文章代码基于 Android OpenGL学习入门:曲棍球1
上一篇文章最后出来的效果,形状是对了,但颜色感觉有点死板,这节我们调整下颜色,让图形平滑着色,看起来更真实。
OpenGL允许我们平滑地混合一条直线或一个三角形的表面上每个顶点的颜色值。现在计划使用这种平滑着色,使得桌子中心表现得更加明亮,而其他边缘显得比较暗淡,这就好像一盏灯挂在桌子中间的上方一样。
这节主要调整的有 Renderer 和 着色器,其他几个类不动。先看着色器。
顶点着色器 basic.vs12345678910attribute vec4 a_Position; attribute vec4 a_Color; varying vec4 v_Color; void main(){ v_Color = a_Color; gl_Position = a_Position; gl_PointSize = 20.0; }
在顶点着色器中加入了新的属性a_Color,也加入了一个叫做v_Color的新的varying。
varying是一个特殊的变量 ...
Android OpenGL学习入门:曲棍球1
OpenGLOpen Graphics Library图形领域的工业标准,是一套跨编程语言、跨平台的、专业的图形编程(软件)接口。它用于二维、三维图像,是一个功能强大,调用方便的底层图形库。与硬件无关。可以在不同的平台如Windows、Linux、Mac、Android、IOS之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。
OpenGL版本和Android版本对应关系:
OpenGL ES 1.0 和 1.1: Android 1.0和更高的版本支持这个API规范
OpenGL ES 2.0:Android 2.2(API 8)和更高的版本支持这个API规范
OpenGL ES 3.0:Android 4.3(API 18)和更高的版本支持这个API规范
OpenGL ES 3.1:Android 5.0(API 21)和更高的版本支持这个API规范
OpenGL ES针对手机、PDA和游戏主机等嵌入式设备而设计的OpenGL API 子集。
Android开发中可以通过 Android 的 Java api 使用,也可以采用 c++ 和 JN ...
C++中的reinterpret_cast
reinterpret_cast用于任意类型的转换。
reinterpret_cast 允许将任意指针转换到其他指针类型,也允许任意整数类型和任意指针类型之间的转换。转换时,执行的是逐个比特复制的操作。
reinterpret_cast的用法:
1reinpreter_cast<type-id> (exp)
其中 type-id 类型必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针。
例如,Android 源码 android_hardware_SensorManager.cpp 的一个方法:
1234567891011static jbooleannativeGetSensorAtIndex(JNIEnv *env, jclass clazz, jlong sensorManager, jobject sensor, jint index){ SensorManager* mgr = reinterpret_cast<SensorManager*>(sensorManager ...
最近迷上《黑暗荣耀》了!!
这首歌我个人觉得不错。给人一种”一发入魂”的感觉。
(点击上图可到 Youtube 欣赏)
英文歌词:
Sometimes the forest gives me the realized.You have to be strong.Would you think unreal? No.The whole world will be yours yeah.
Feel, take a deep breath.Listen to their voices.They believe in you.You feel what you feel and your feelings are real. Right
Even if you’re worried, don’t be afraid.I can sense you there.Death always touched you and you kept going.Then show yourself. Your turn
-Humming-Hear the sound of victory?You’re the master of t ...
MTK Sensor框架 及信息传递详解
一、概述sensor(传感器)作为手机中一个非常重要且目前来说不可或缺的一种组件,功能强大,但是使用却很简单。Android 传感器属于虚拟设备,可提供来自以下各种物理传感器的数据:加速度计、陀螺仪、磁力计、气压计、湿度传感器、压力传感器、光传感器、近程传感器和心率传感器。因为对于日常生活来说有一部分sensor是使用频率是很高的,所以必然也伴随着手机功耗的增加如果每次都是CPU进行处理的化,而且CPU一旦休眠还伴随着sensor会停止工作,为了优化手机使用Google和MTK分别开发了CHRE 和SCP 进行sensor控制。
首先介绍以下SCP:
SCP 是用来处理sensor和audio相关功能和其他客制化需求的一个协处理理器,MTK SCP选择freeRTOS作为操作系统,CHRE是处理传感器相关操作的专门任务,它的架构如下然后是CHRE:
在SCP下,MTK传感器集线器功能是在google CHRE ar上开发的,chre(Context Hub Runtime Environment)是一种事件驱动的体系结构,也可以被视为操作系统。
黄色部分是事件队列,CHRE只有一个wh ...
关于Android中的Uevent事件
Android设备中,当电池电量发生变化,USB插入、拔出等等事件发生,或者说是状态变化,是怎么通知到应用层的?
Uevent 是内核通知Android有状态变化的方法之一。其本质是内核发送一个字符串(通过Socket),应用层(Android层)接收并解释该字符串,获取相应的信息。
Android 层Android 层通过 UEventObserver 来接收和处理 uevent 事件。关联源码有:
12frameworks/base/core/java/android/os/UEventObserver.javaframeworks/base/core/jni/android_os_UEventObserver.cpp
UEventObserver 是一个从内核接收 UEvent 的抽象类。
使用时,需要继承 UEventObserver,并实现 onUEvent(UEvent event),然后使用匹配字符串调用 startObserving()。然后,UEvent 线程将在包含匹配字符串的 UEvent 发生时调用您的 onUEvent() 方法。
可以通过调用 `s ...
文心一言AI作图神作品欣赏
最近AI很火,尤其是 Open AI 发布GPT-4之后那是火得一塌糊涂啊。百度的文心一言对标 GPT-4,但目前来看,给人的感觉就是高开低走,有点不尽如人意。下面我们来欣赏下文心一言 AI 神作:
虎头虎脑
车水马龙
唐伯虎点秋香
鱼香肉丝
胸有成竹
红烧狮子头
老婆饼
司马光砸缸
驴肉火烧
看过文心一言的发布会,再看这些作品,也不能说TA不好,只能说中国文化博大精深啊!