相机

Unity - Cinemachine实现相机抖动

你离开我真会死。 提交于 2020-02-01 05:24:48
普通相机抖动脚本较易实现,但在使用cinemachine相机下,其Transform组件不可被代码修改,那么Cinemachine的相机抖动如何实现呢?本文结合实际项目,对实现相机抖动的三大步骤进行系统讲解: 项目地址: Hero - SouthBegonia 配置流程 项目背景:一款2D像素动作游戏,我们操控着Player(必须带有Collider组件),游戏相机为 Cinemachine 2DCamera (关于其配置方法此处不做赘述,推荐文章在末尾参考处) 1. 在相机上添加监听脚本 在我们使用的虚拟相机 CM vcam1 上添加组件:AddComponent-> CinemachineImpulse Listener CinemachineImpulse Listener : 监听脚本内震动信号(方法调用) ,使得 抖动在此相机上发生 Channel Mask:通道遮罩,此处最好默认为EveryThing Gain:可获得震动信号的数目,0为屏蔽,1表示某时段仅能进行一个抖动运动 Use 2D Distance:用于2D游戏,忽略相机Z轴的抖动 2. 在震动信号发生物体上添加脚本 震动信号发生物体( 调用震动函数的物体 )为Player,因此需要在Player上添加组件:AddComponent-> Cinemachine Collision Impulse Source

认识Threejs

非 Y 不嫁゛ 提交于 2020-01-31 01:12:15
Threejs定义 Threejs运行在浏览器的3d javascript库(three表示3D的意思,js表示javascript) Three主要对象 1.场景(Scene):是物体、光源等元素的容器, 2.相机(Camera):控制视角的位置、范围以及视觉焦点的位置,一个3D环境中只能存在一个相机 3.渲染器(Renderer):指定渲染方式,如webGL\canvas2D\Css2D\Css3D等。 4.物体对象(Mesh):包括二维物体(点、线、面)、三维物体、粒子 5.光源(Light):包括全局光、平行光、点光源 6.控制器(Control): 相机控件,可通过键盘、鼠标控制相机的移动 场景(Scene) 物体、光源、控制器的添加必须使用secen.add(object)添加到场景中才能渲染出来。一个3D项目中可同时存在多个scene,通过切换render的scene来切换显示场景 var scene = new THREE.Scene(); // 创建场景对象 var mesh=scene.getObjectByName("sky");//获取场景中命名的name=sky的对象 方法 属性 add(object) 用于向场景中添加对象。使用该方法还可以创建对象组。(几何体、光源等对象) children 用于返回一个场景中所有对象的列表,包括摄像机和光源。

相机相关

≯℡__Kan透↙ 提交于 2020-01-30 00:47:00
一、焦距 1.焦距概念 焦距是光学系统中衡量光线聚集或发散的度量方式。平行的光线进入对焦在无穷远的镜头后,它们汇聚到一点,这个点叫做焦点。简单来说,焦距长度是指从透镜的光心到焦点的距离。为了能够对焦到比无限远近一些的被摄体上,镜头要调节至距焦平面更远的位置。这就是很多镜头在转动对焦环时镜头长度会增大的原因。 2.镜头按焦距大小的分类 摄影镜头数量庞大,从鱼眼镜头到长达1000毫米的超远摄镜头。我们通常把它们分为广角镜头、标准镜头和远摄镜头。人类的视角大体上相当于50mm焦距的视角,所以焦距在35-50mm的镜头都被看作标准镜头。小于这个焦距的为广角镜头,大于的则为远摄镜头。 3.焦距对成像的影响 与被摄体距离相同的情况下,长焦距镜头比短焦距镜头拍摄的画面中,被摄体所占的比例要大。相同的被摄体距离,焦距长度增加一倍会让被摄体在画面中的大小也增大一倍。或者,保持焦距长度不变,减少被摄体到相机的距离到一半,也会让被摄体在画面中的大小增加一倍。 二、视场角 视场角在光学工程中又称视场,视场角的大小决定了光学仪器的视野范围。视场角又可用FOV表示,其与焦距的关系如下:h = f tan[Theta];像高 = EFL tan (半FOV);EFL为焦距;FOV为视场角。 HFOV:水平 VFOV:垂直 DFOV:对角 三种视场角的计算方式: 相同分辨率下,不同镜片视场角对比: 实际测试图片

openmv之特征点检测

淺唱寂寞╮ 提交于 2020-01-29 22:04:14
本例程利用 FAST/AGAST 算法进行特征提取,并且进行目标追踪,仅支持灰度图。 注意:本例程会把程序运行最开始的十秒左右出现的物体作为目标特征,请在程序运行的最开始,将目标物体放在摄像头中央识别,直至出现特征角点,证明已经识别记录目标特征。 匹配过程中,如果画面出现十字和矩形框,证明匹配成功。 1 # Object tracking with keypoints example. 2 # Show the camera an object and then run the script. A set of keypoints will be extracted 3 # once and then tracked in the following frames. If you want a new set of keypoints re-run 4 # the script. NOTE: see the docs for arguments to tune find_keypoints and match_keypoints. 5 import sensor, time, image 6 7 # Reset sensor 8 sensor.reset() 9 10 # Sensor settings 11 sensor.set_contrast(3) 12 sensor.set

IOS研究院之打开照相机与本地相册选择图片(六)

雨燕双飞 提交于 2020-01-29 04:22:30
原创文章如需转载请注明:转载自 雨松MOMO程序研究院 本文链接地址: IOS研究院之打开照相机与本地相册选择图片(六) Hello 大家好 IOS的文章好久都木有更新了,今天更新一篇哈。 这篇文章主要学习如何在IOS程序中打开照相机与本地相册并且选择一张图片。还是老样子MOMO写了一个简单的测试程序,如下图所示 在本地相册中选择一张图片后,我们将他拷贝至沙盒当中,在客户端中将它的缩略图放在按钮旁边,这个结构其实和新浪微薄中选择图片后的效果一样。最终点击发送将按钮将图片2进制图片上传服务器。 下面我们仔细学习具体的细节。创建一个空的IOS项目,接着在创建一个ViewController。 AppDelegate.h 应用的代理类 这个没什么好说的就是直接打开刚刚创建的新ViewController。 #import <UIKit/UIKit.h> #import "TestViewController.h" @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) UINavigationController *navController; @property

用照相机照相并保存上传服务器等操作

纵饮孤独 提交于 2020-01-28 15:20:35
参考:http://www.apple.com.cn/developer/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide /AdvancedFeatures/AdvancedFeatures.html#//apple_ref/doc/uid/TP40007072-CH14-SW13 .h文件如下: #import <UIKit/UIKit.h> @interface FirstViewController : UIViewController< UINavigationControllerDe legate,UIImagePickerControllerD elegate > {//要引入这两个协议 UIButton *_button; UIImagePickerController *_pick; } -(IBAction)button_click:(id)sender; @property(nonatomic,retain)UIImagePickerController *pick; @property(retain,nonatomic)IBOutlet UIButton *button; @end .m文件如下: //保存图片到Document - (void)saveImage:

Android调用相机,本地相册。

不羁岁月 提交于 2020-01-26 18:56:41
这两个应用操作本质上就是通过activity的action属性来调用相应的activity。 调用相机核心代码: Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //指向拍照activity的intent activity.startActivityForResult(camera, GMJValues.CAMERA); //camera为自己设置的request code 调用相册的核心代码: Intent picture = new Intent(Intent.ACTION_GET_CONTENT); picture.setType("image/*"); activity.startActivityForResult(picture, GMJValues.PICTURE); 第一句为启动指向显示文件的activity,第二句为设置显示的文件的路径。 其他类似的调用:    // 视频    Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT);    innerIntent.setType(contentType); //String VIDEO_UNSPECIFIED = "video/*";    Intent

光场相机重聚焦之三——Matlab光场工具包使用、重聚焦及多视角效果展示

做~自己de王妃 提交于 2020-01-26 06:55:59
这一小节说一下Matlab光场工具包的使用,展示重聚焦和多视角的效果。 从Lytro illum中导出的raw数据为.lfp格式的光场图像文件(约52M大小),该文件包含以下几部分:光场图像数据rawdata;metadata;相机序列号 serials;光场图像大小imgSize;拜尔格式 ‘grgb’。为了从.lfp文件中提取出光场图像rawdata,需要用到 Matlab光场工具包 ,该工具包由D. G. Dansereau等人开发,目前有toolbox0.3,toolbox0.4两个版本,toolbox0.4的下载地址为: https://cn.mathworks.com/matlabcentral/fileexchange/49683-light-field-toolbox-v0-4?s_tid=srchtitle 。这个网址还有配套的示例图片(sample 压缩包,另行下载就可以了),工具包的使用教程在工具包解压出来的文件夹里面(.pdf文件)。接下来就是对光场文件进行解码得到光场图像,并对光场图像进行去马赛克,色彩校正等操作得到RGB的彩色光场图像。 关于工具包的详细设置和使用方法,强烈建议参考这篇文章 http://www.vincentqin.tech/2017/02/16/LightField%E5%85%89%E5%9C%BA/ ,作者写的很详细,我就不赘述了

单目视觉标定原理

时光怂恿深爱的人放手 提交于 2020-01-26 02:44:30
在计算机视觉中,通过相机标定能够获取一定的参数,其原理是基于三大坐标系之间的转换和摄像机的畸变参数矩阵。在实验中经常用张正友标定发,进行摄像机标定,获取到内参数矩阵和外参数矩阵以及畸变参数矩阵。在应用中要区分三者作用。这也是在程序中函数输入量。 一、三大坐标系 在计算机视觉中,利用图像中目标的二维信息获取目标的三维信息,肯定需要相机模型的之间转化。 1、图像坐标系 在计算机系统中,描述图像的大小是像素,比如图像分辨率是1240*768.也就就是以为图像具矩阵rows是1024,cols是768.那图像的原点是在图像的左上角。 以图像左上角为原点建立以像素为单位的直接坐标系u-v。像素的横坐标u与纵坐标v分别是在其图像数组中所在的列数与所在行数。这是像素坐标,而不是物理坐标,为了后续的模型转换,有必要建立图像坐标系。 图像坐标系是以图像中心为原点,X轴和u轴平行,Y轴和v轴平行。 dx和dy标示图像中每个像素在X轴和Y轴的物理尺寸,其实就是换算比例。比如图像大小是1024*768,图像坐标系x-y中大小为19*17.那么dx就是19/1024 . 则图像中的每个像素在u-v坐标系中的坐标和在x-y坐标系中的坐标之间都存在如下的关系: (上述公式中我们假设物理坐标系中的单位为毫米,那么dx的的单位为:毫米/像素。那么x/dx的单位就是像素了,即和u的单位一样都是像素) 为了使用方便