相机

Android 自定义相机Demo源码

我与影子孤独终老i 提交于 2020-01-25 21:20:36
本文转载自: https://www.cnblogs.com/linjzong/p/4201266.html 作者:linjzong 转载请注明该声明。 Github源码:https://github.com/LinJZong/AndroidProject.git 模仿360相机,图片资源来源于360相机,仅供学习使用。使用过程中遇到问题或Bug可发我邮箱405376689@qq.com。对了,未做兼容性测试不保证所有机型和sdk版本可通用。 截图如下: 目前完成了拍照、保存、图片压缩、触摸聚焦、拍照成功附带动画效果、闪光灯切换、手势缩放等功能,功能持续更新中。 2月份补充:新增相册功能。包含缩略图预览、图片删除、长按进入删除模式、全选等。 2月份补充2:新增大图查看功能。自定义了MatrixImageView用以实现大图的手势放大、缩小、拖动、翻页。该功能可参考百度贴吧的图片查看功能。 3月10号补充:新增了视频录制、视频播放功能;新增水印照片功能;新增内置的视频播放器功能。修改了若干Bug。 最近更新的较频繁,就不放csdn了,等功能全做完了再传csdn。介绍下目前主要几个功能类凑够200字。 public class CameraView extends SurfaceView implements SurfaceHolder.Callback{

漫谈计算摄像学 (一):直观理解光场(Light Field)

可紊 提交于 2020-01-25 02:13:01
本文已经搬运到: https://zhuanlan.zhihu.com/p/24982662 什么是计算摄像学 计算摄像学(Computational Photography)是近年来越来越受到注意的一个新的领域,在学术界早已火热。本来计算摄像学的业界应用在群众中一直没什么知名度,直到Lytro公司推出了外观十分酷炫的光场相机,打着“先拍照再对焦”的噱头,这个学科一下子被很多研究领域以外的人开始注意到。那什么是计算摄像学呢?让我们看看清华大学和中科院的教授们怎么说 [1] : “计算摄影学是一门将计算机视觉、数字信号处理、图形学等深度交叉的新兴学科,旨在结合计算、数字传感器、光学系统和智能光照等技术,从成像机理上来改进传统相机,并将硬件设计与软件计算能力有机结合,突破经典成像模型和数字相机的局限性,增强或者扩展传统数字相机的数据采集能力,全方位地捕捉真实世界的场景信息。” 这种定义虽然没什么错误,可其实相当于什么都没说。。个人觉得计算摄像学的定义得从一般的数码摄影对比着来理解。一般的数码摄影分为两个大步骤:1) 通过相机采集图像;2) 后期处理。而在每个大步骤里又有很多小的要素,比如1)里,需要考虑光照,相机角度,镜头组(光学系统),传感器等等,2)里的方方面面就更多了,降噪,调曲线,各种PS滤镜等等。如果这其中的每一个要素,我们都想办法进行拓展和改变。比如用特殊手段照明

相机标定原理介绍(一)

荒凉一梦 提交于 2020-01-24 20:43:27
http://blog.csdn.net/aptx704610875/article/details/48914043 标定实例 一.总体原理: 摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵的过程。 [1]基本的坐标系: 世界坐标系; 相机坐标系; 成像平面坐标系; 像素坐标系 [2 ]一般来说,标定的过程分为两个部分: 第一步是从世界坐标系转为相机坐标系,这一步是 三维点到三维点 的转换,包括R,t (相机外参, 确定了相机在某个三维空间中的位置和朝向 )等参数; 第二部是从相机坐标系转为 成像平面 坐标系( 像素坐标系 ),这一步是 三维点到二维点 的转换,包括K( 相机内参, 是对相机物理特性的近似 )等参数; 投影矩阵 : P=K [ R | t ] 是一个3×4矩阵,混合了内参和外参而成。 P = K [ R t ] 二.基本知识介绍及 1、摄像机模型 Pinhole Camera模型如下图所示: 是一个小孔成像的模型,其中: [1] O 点表示 camera centre ,即相机的中心点,也是相机坐标系的中心点; [2]z轴表示 principal axis ,即相机的主轴; [3]q点所在的平面表示 image plane ,即相机的像平面,也就是图片坐标系所在的二维平面; [4] O1 点表示

关于ComputeScreenPos和ComputeGrabScreenPos的差别

断了今生、忘了曾经 提交于 2020-01-21 05:36:10
一个Bug 今天QA报了一个渲染相关的bug:一个用了 扭曲 效果的翅膀特效在场景相机下显示正常,但是在UI相机上却有问题,截图如下: 扭曲背景 上下颠倒 了。 Bug的修正 这里用的 扭曲shader 是我们的美术同学从他们前项目搬过来的,代码很简单: 用 GrabPass 抓取当前屏幕做为扭曲背景。 添加 UV扰动 后再采样屏幕背景,即可达到扭曲效果。 问题是,这里采样 GrabTexture 的时候用的是 screenUV 而非 grabUV ,代码如下: 顶点着色器: o.screenPos = ComputeScreenPos (o.pos); 像素着色器: float2 sceneUVs = (i.screenPos.xy / i.screenPos.w) + (_Value * diffuseTex.a * float2(diffuseTex.r, diffuseTex.g) * i.vertexColor.a); half4 sceneColor = tex2D(_GrabTexture, sceneUVs); 修正这个问题很简单,把 ComputeScreenPos 换成 ComputeGrabScreenPos 即可,修正后的代码如下: 顶点着色器: o.screenPos = ComputeGrabScreenPos (o.pos); 调整完之后就正常了

iOS 自定义相机功能

China☆狼群 提交于 2020-01-20 03:40:17
导入相机的API在AVFoundation里所以得包含头文件 #import <AVFoundation/AVFoundation.h> 1. 自定义相机需要的属性 @interface CustomCameraVC ()<UIAlertViewDelegate> //捕获设备,通常是前置摄像头,后置摄像头,麦克风(音频输入) @property(nonatomic)AVCaptureDevice *device; //AVCaptureDeviceInput 代表输入设备,他使用AVCaptureDevice 来初始化 @property(nonatomic)AVCaptureDeviceInput *input; //当启动摄像头开始捕获输入 @property(nonatomic)AVCaptureMetadataOutput *output; //照片输出流 @property (nonatomic)AVCapturePhotoOutput *ImageOutPut; //session:由他把输入输出结合在一起,并开始启动捕获设备(摄像头) @property(nonatomic)AVCaptureSession *session; //图像预览层,实时显示捕获的图像 @property(nonatomic)AVCaptureVideoPreviewLayer

鱼眼相机成像模型学习

情到浓时终转凉″ 提交于 2020-01-19 00:59:02
0.前言 相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素),这个过程可以用一个几何模型进行描述,其中最简单的一个模型称为针孔模型。之所以说它简单,是因为这是个线性变换;但是实际的相机上因为透镜的存在,会使光线投影到成像平面的过程中产生畸变,增加了非线性的变换过程。 1.针孔相机模型 首先不考虑畸变,建立图1所示针孔相机成像模型。 图1 小孔成像模型与相机坐标系 又是包含一堆公式的推导,贴图大法走起。 这里需要注意的有两点:1)像素坐标系中一般以左上角为原点,向右为x轴正方向,向下为y轴正方向,乍一看像是左手坐标系,实则不然,此时还是右手坐标系。2)上述方程的推导是建立在图1所示的相机坐标系的基础上;如果我们定义的相机坐标系不是图中的那样(譬如Z轴向上之类的),则不能直接套用该公式 2.鱼眼相机模型 小孔成像模型简单易懂,但实际相机中成像模型往往更复杂。假如使用小孔成像模型制造相机,则其视场角不会很大(想象一下cmos底片很小且焦距固定的情况)。而我们实际使用中甚至有视场角达到180°的鱼眼相机,使用小孔成像模型是绝对做不到的,其中实现的方式就是引入了组合透镜。 图2 鱼眼相机成像 以鱼眼相机为例,为了获取更加宽广的视野,使用组合透镜,使入射光线经过不同程度的折射投影到成像平面,使得鱼眼镜头相比于普通镜头拥有了更大的视野范围。 图3 鱼眼镜头成像简化模型

相机VCM调焦策略

送分小仙女□ 提交于 2020-01-18 05:16:07
为了采集到清晰的图像,必须通过调整镜头改变焦点位置,获得清晰图像。通过外置音圈马达调节镜头是一种可行的方式。 调焦分3个过程: 粗调阶段,VCM调整步长就大,用于快速定位到焦点附近 精调阶段,VCM调整步长比粗调阶段小,近一步定位准确焦点 微调阶段,VCM在焦点附近移动,采集清晰图像 调节VCM时还有很多细节需要注意: 距离较远时,VCM的小变化回引起焦点的较大变化;距离较远和较近时的步长设置 若有距离参考(有距离传感器),可根据距离值一起参与调焦(距离突然变化时重置调焦过程) 调焦与帧画面的滞后关系 到达最大/最小调焦位置时的处理 清晰度连续增加或减小时的步长设置 最重要的一个就是清晰度判断算法!!!可以使用Laplace边缘梯度检测算法。 来源: CSDN 作者: lwwl12 链接: https://blog.csdn.net/lwwl12/article/details/103727361

webCamTexture转换为Mat后让RawImage显示

南笙酒味 提交于 2020-01-17 21:36:50
目录 一:目的: 1、因为需要找到手指的最高点,最终决定使用OpencvForUnity,所以想找到将摄像头画面转换为Mat,再将mat显示在Unity中。这样我就可以对Mat进行类似Opencv一样的操作 一、参考: 1、Unity如何将摄像头画面显示在cube或者plane上面 ①总结:good:知道打开相机 2、OpenCVForUnity插件 配置基础开发环境 ①总结:good;知道OpencvForUnity下载、使用 一、自己做: 1、注意:分辨率一定要注意,我在这里没有仔细写,摄像头的分辨率、RawImage的分辨率都是要注意大小 一:目的: 1、因为需要找到手指的最高点,最终决定使用OpencvForUnity,所以想找到将摄像头画面转换为Mat,再将mat显示在Unity中。这样我就可以对Mat进行类似Opencv一样的操作 一、参考: 1、Unity如何将摄像头画面显示在cube或者plane上面 https://blog.csdn.net/qq_40544338/article/details/102582442 ①总结:good:知道打开相机 2、OpenCVForUnity插件 配置基础开发环境 https://blog.csdn.net/tpz789/article/details/91171127 ①总结:good;知道OpencvForUnity下载

Three.js的基础知识(二)

拜拜、爱过 提交于 2020-01-16 19:23:10
Three.js的基础知识二 Three.js的相机 Three.js让场景动起来的两种方式 性能测试 相机的工作原理 Three.js的相机 Three.js让场景动起来的两种方式 变换物体的位置 变换相机的位置 有一个函数可以不断的绘制场景,不断的调用render来重绘,这个循环就称为渲染循环。 function animate() { render(); requestAnimationFrame(animate); } 性能测试 FPS(Frames Per Second):视频或者动画每秒显示多少帧数。理论上,3D程序最大的帧数是显卡支持的刷新率,一般是60。 stats :一个监控程序 帧数、每帧时间、内存使用量的js库。使用方法可以看readme.md,进行使用。 tweenjs :给 tween 要修改的值、动画结束时的最终值和动画花费时间(duration),之后 tween 引擎就可以计算从开始动画点到结束动画点之间值,从而产生平滑的动画效果。 相机的工作原理 Three.js里共有正投影以及透视投影相机。 正投影相机:THREE.OrthographicCamera(left,right,top,bottom,near,far)其中near指的是相机最小能看到的平面,near指的是相机最远可以看到的平面。 透视相机:THREE

适用于现代制造商的质量保证工具集

拈花ヽ惹草 提交于 2020-01-16 08:07:55
“机器视觉”的正式定义涵盖所有工业和非工业应用,其中硬件和软件的组合根据图像的捕获和处理为设备执行其功能提供操作指导。简而言之,机器视觉可帮助公司重复制造优质产品。而且由于制造有缺陷的商品的公司不会持续很长时间,因此制造业已经转向机器视觉来获取所需的质量保证。但是在公司充分利用机器视觉之前,它需要了解基础知识。 例如,现代机器视觉系统依靠工业相机内部的数字传感器和专用光学器件来获取图像。采集图像后,计算机硬件和软件会处理,分析和测量图像的各种特征,以实现自动决策。 与人工检查器不同,机器视觉由于其速度,准确性和可重复性而在结构化场景中的定量测量方面表现出色。例如,在一条生产线上,机器视觉系统可以每分钟检查数百甚至数千个零件。同时,以正确的相机分辨率和光学系统为基础的机器视觉系统可以轻松地检查无法被人眼看见的物体细节。 机器视觉的组成 机器视觉系统的主要组件包括照明,镜头,图像传感器,视觉处理和通信。照明照亮了要检查的零件,使其特征突出,因此相机可以清晰地看到它们。镜头捕获图像并将其以光的形式呈现给传感器。机器视觉相机中的传感器将这些光转换为数字图像,然后将其发送到处理器进行分析。 视觉处理步骤利用的算法可检查图像并提取所需信息,进行必要的检查并做出决定。最后,通信通常通过离散I / O信号或通过串行连接发送到正在记录信息或将其用于某些后续操作的设备的数据来完成。