Unity3d实现摄像头的截部分图(图片裁剪、截图)功能项目源码
2023-09-27 14:27:29 时间
功能需求
由于有个项目里需要识别二维码,就是在调用摄像头后,通过摄像头获取的图片对二维码进行识别。这样的话,将整个图片进行识别,识别的效率不高,所以打算弄一个识别框,只对识别框内的进行二维码识别,这样能大大提高识别率。
只不过这样的话就需要将框内的画面单独提取出来,再进行识别。就类似于截取画面内的一部分进行识别。
功能实现
搭建简单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 < w || webCamTextrue.height < h) {
Debug.LogError("截取尺寸错误!");
return;
}
//计算取便宜值(此处是从中间截图)
Vector2 offset = new Vector2((webCamTextrue.width - w) / 2, (webCamTextrue.height - h) / 2);
//设置像素点
mTexture.SetPixels(webCamTextrue.GetPixels((int)offset.x, (int)offset.y, w, h));
mTexture.Apply();
//关联贴图
CutImg.texture = mTexture;
}
实现效果
工程源码
相关文章
- UWA全新改版,项目制带你全面起飞
- 开源项目推荐:GSL科学计算函数库(GNU Scientific Library),实现VS2019源码编译
- 常用面试/笔试开源小项目31~40
- C++程序设计课程同步项目——简单程序设计任务
- 《精通Python网络爬虫:核心技术、框架与项目实战》——1.3 网络爬虫的组成
- iOS 问卷试题类项目之 多类型问卷原生App (教程含源码)
- iOS Swift 人工智能相机完成项目之宠物自动拍摄APP基于机器视觉(项目含源码)
- SwiftUI macOS iOS 完整项目大全之时间记录器coredata实现增删改查(教程含源码)
- SwiftUI 精品项目之 电影管理和播放App(教程含源码)
- SwiftUI 全站项目之Django服务器和客户端Moya Alamofire URLSession 支持GET和POST Kingfisher (教程含源码)
- SwiftUI iOS 完整项目之基于CoreData构建购物计划App(教程含源码App Store上线app)
- SwiftUI iOS 精品开源项目之 02 完整播客Podcast采用网络类项目Alamofire Feedkit SQLite (教程含源码)
- macOS SwiftUI 项目大全之 全功能计时器支持音乐提醒下拉菜单(教程含源码)
- 从项目上一个子查询扩展学习开来:mysql的查询、子查询及连接查询
- java项目之疫情网课管理系统(springboot+vue源码)
- Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性
- 软件项目客户迟迟不肯验收怎么办?
- 通过myclipse建立一个简单的Hibernate项目(PS:在单元测试中实现数据的向表的插入)
- 关于企业中的项目开发代码共享
- iOS - Xcode项目统计总代码行数
- 通过APScheduler使用定时任务对openstack的VM虚拟机和计算节点compute node 分别进行cpu、memory、traffic资源统计项目实战及实现源码(五)
- git项目代码一次push,同时上传到多个git仓库地址,并保证多个仓库代码同步一致