Unity3d实现摄像头的截部分图(图片裁剪、截图)功能项目源码
功能需求
- 功能需求
- 功能实现
- 搭建简单UI
- 摄像头拍摄
- 截取部分图
- 截图代码
- 实现效果
- 工程源码
由于有个项目里需要识别二维码,就是在调用摄像头后,通过摄像头获取的图片对二维码进行识别。这样的话,将整个图片进行识别,识别的效率不高,所以打算弄一个识别框,只对识别框内的进行二维码识别,这样能大大提高识别率。 只不过这样的话就需要将框内的画面单独提取出来,再进行识别。就类似于截取画面内的一部分进行识别。
功能实现 搭建简单UI新建两个RawImage,一个用于展示摄像头的画面,另一个用于展示截图。 一个按钮节点,点击后进行截图并展示,其实使用keycode快捷键也方便。
摄像头拍摄这个功能我就不赘述了 不知道的可以看看我之前写的 Unity3d开发HoloLens2启动摄像头实现截图、拍照功能, 虽然是针对HoloLens2写的,但是都是通用的。
截取部分图大致的思路是先新定义了个Texture2D为截到的贴图,并通过SetPixels将像素点加到图片上。
计算截图的偏移值:
Vector2 offset = new Vector2((webCamTextrue.width - w) / 2, (webCamTextrue.height - h) / 2);
这是根据截图的高宽,计算开始像素的偏移值,这里是在画面的中间位置进行截图,正常应该都是中间位置的截图。
设置贴图像素点:
mTexture.SetPixels(webCamTextrue.GetPixels((int)offset.x, (int)offset.y, w, h));
先获取摄像头画面的像素,再将范围内的像素设置给截图。
截图代码public RawImage CamImg, CutImg;
//定义截取的尺寸
public int w = 256, h = 256;
//截图贴图
Texture2D mTexture;
public void DoCut() {
if (webCamTextrue.width
关注
打赏
热门博文
- Unity3d 插件着色器(Shader)报错Too many texture interpolators...和‘vert‘: output parameter ‘o‘ not ...修复记录
- Unity3d C# 网址url未转义问题(https%3A%2F%2F => https://)网址无法打开问题 URL is missing a protocol e.g. http://...
- Unity3d C# 使用Universal Media Player(ump)插件播放视频的众坑之无法播放视频和VLC播放器依赖的问题
- 软考高级软件架构风格定义以及分类
- Unity 使用NVIDIA FleX for Unity插件实现制作软体、水流流体、布料等效果学习教程
- Unity3d 使用统一可寻址资产系统(Addressables)实现服务器资源热更新和资源版本管理等功能(含源码)
- Unity3d minigame-unity-webgl-transform插件转换微信小游戏报错To use dlopen, you need to use Emscripten‘s...问题
- Unity 利用Skybox Panoramic着色器制作全景图预览有条缝隙问题解决办法
- Unity3d C# 开发微信小游戏分享图片、朋友圈等功能实现(含源码)
- Unity3d Windows播放视频(视频流)功能组/插件支持对比