栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

unity里面使用opencv,qt建立plugin(一)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unity里面使用opencv,qt建立plugin(一)

1、unity

unity是一个非常良好的工具,简单易用,如何在unity中使用opencv?有两种方式,一种是把rgba传输过去,建一个服务接收,一种则是使用插件方式,对于熟悉动态库的人来说,比较简单。

2、使用qt建立动态链接库

qt 里面建立一个动态链接库,选择mingw 64

使用qt的好处是建立动态库同时适应多个操作系统

#include "imagelib_global.h"
struct Color32
{
    uchar r;
    uchar g;
    uchar b;
    uchar a;
};
extern "C"
{
IMAGELIB_EXPORT void ImageProcess(Color32* raw, int width, int height);
}
#endif // IMAGELIB_H
/
#include "imagelib.h"
extern "C"
{

void ImageProcess(Color32* raw, int width, int height)
{
  //这里使用opencv函数
    using namespace cv;
    using namespace std;
    Mat frame(height, width, CV_8UC4, raw);
}
}

上面就是最基础的使用方法了,编译完成就好,在windows里面是dll动态库,在linux和android里面是 so 文件。

3、unity 摄像头

同样,unity里面可以使用动态库的方式来接收rtsp 的画面,同时,也可以使用WebCapTexture 来获取web摄像头, untiy 使用c# 代码

public WebCamTexture webcam;
if (webcam.isPlaying)
{
	Color32[] rawImg = webcam.GetPixels32();
	System.Array.Reverse(rawImg);
	processImage(rawImg, webcam.width, webcam.height);
}
//Runtime
using System.Runtime.InteropServices;

[DllImport("Imagelib", EntryPoint = "processImage")]
public static extern void processImage(Color32[] raw, int width, int height);

以上是使用usb 的摄像头,每一帧都去处理没有必要,切记

4、unity中的传输

unity 中可以使用传输方案,比如接收rtsp 或者 sip GB28181 的视频,都可以使用插件的方式,使用c++做好传输库,在unity里面展现就好。
这个就下一篇再讲了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971914.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号