struct PinCamParIn//用户输入的针孔相机参数结构体
{
    char CameraName[512];
    float Offset[3];
    float Angle[3];
    float FocalLen;
    float PixsSize;
    int Resolution[2];
}

struct PinCamParOut//用于给南老师渲染图像的相机参数结构体
{
    char CameraName[512];
    float Offset[3];
    float Angle[3];
    float VerFOV;
    float Aspect;
    int Resolution[2];
}

struct FishCamPar//用户输入的鱼眼相机参数结构体
{
    char CameraName[512];
    float Offset[3];
    float Angle[3];
    float FocalLen;
    float PixsSize;
    int Resolution[2];
    float MaxFOV;
}

struct ImagePar//输出图像性质结构体
{
    unsigned char* ImagePtr;//图像数组指针
    int Resolution[2];
}

struct EnvCamPar//用户输入包络线相机参数结构体
{
    char CameraName[512];
    int   Flag;//用于储存切割集合体形状
    float NearDist;
    float FarDist;
    float FOV[2];
}
struct EnvImPar//用户输入包络线图像参数结构体
{
    float SecHeight;
    float mPerBlock;
    int MaxXBlockNum;
    int MaxYBlockNum;
}
/*
用于将用户输入的针孔相机参数结构体转换为南老师渲染需要的针孔相机结构体。
函数参数说明:
struct PinCamParIn InputPinPar 用户输入的针孔相机参数
返回值说明:
struct PinCamParOut类型,用于给南老师渲染
*/
struct PinCamParOut CameraIOTransfer(struct PinCamParIn InputPinPar)

/*
用于根据用户输入的鱼眼相机参数计算得到合成图片用的5个针孔相机参数。
函数参数说明:
struct FishCamPar InputFishPar 用户输入的鱼眼相机参数
返回值说明:
struct PinCamParOut*类型指针,存储着5个鱼眼相机的渲染参数
*/
struct PinCamParOut* FisheyeParCal(struct FishCamPar InputFishPar)

/*
用于合成鱼眼镜头图像
函数参数说明:
struct FishCamPar InputFishPar 用户输入的鱼眼相机参数
ImagePar* FishPinImList 存储5张针孔图片内存的指针
返回值说明:
struct ImagePar 类型的结构体,存储鱼眼图像的指针和横纵像素数
*/
struct ImagePar FisheyeSyn(struct FishCamPar InputFishPar, struct ImagePar* FishPinImList)

/*
用于计算界面上包络线相机的缺省值参数
函数参数说明:
struct PinCamParIn InputPinPar 用户输入的针孔相机参数
返回值说明:
struct EnvCamPar 类型的结构体,存储界面上包络线相机参数的结构体
*/
struct EnvCamPar EnvCamParCal(struct PinCamParIn InputPinPar)

/*
用于生成包络线图片
函数参数说明:
int PinCamNum 针孔相机数量
float ShaftHeight 车辆前轴高度
struct PinCamParIn* InputPinParList 指向所有针孔相机参数结构体数组的指针
struct EnvCamPar* EnvParList 指向所有包络线相机参数结构体的指针
struct EnvImPar EnvImSet 存储用户设置的包络线图形参数的结构体
返回值说明:
struct ImagePar 类型的结构体,存储包络线图像的指针和横纵像素数
*/
struct ImagePar Envelope(int PinCamNum, float ShaftHeight, struct PinCamParIn* InputPinParList, struct EnvCamPar* EnvParList , struct EnvImPar EnvImSet)

// 给北京外包公司接口及结构体定义

struct PinCamParIn//用户输入的针孔相机参数结构体
{
    char CameraName[512];
    float Offset[3];
    float Angle[3];
    float FocalLen;
    float PixsSize;
    int Resolution[2];
}

struct PinCamParOut//用于给南老师渲染图像的相机参数结构体
{
    char CameraName[512];
    float Offset[3];
    float Angle[3];
    float VerFOV;
    float Aspect;
    int Resolution[2];
}

struct FishCamPar//用户输入的鱼眼相机参数结构体
{
    char CameraName[512];
    float Offset[3];
    float Angle[3];
    float FocalLen;
    float PixsSize;
    int Resolution[2];
    float MaxFOV;
}

struct ImagePar//输出图像性质结构体
{
    unsigned char* ImagePtr;//三维数组指针
    int Resolution[2];
}

struct EnvCamPar//用户输入包络线相机参数结构体
{
    char CameraName[512];
    int   Flag;//用于储存切割集合体形状
    float NearDist;
    float FarDist;
    float FOV[2];
}
struct EnvImPar//用户输入包络线图像参数结构体
{
    float SecHeight;
    float mPerBlock;
    int MaxXBlockNum;
    int MaxYBlockNum;
}

// ------------------------------------------------------------------------------------------------

/*!
*
* 界面针孔相机参数转换为3D渲染相机参数的接口
*
* @param[in]  PinCamParIn 用户输入界面相机参数
* return PinCamParOut 输出3D渲染相机参数
*/
struct PinCamParOut CameraIOTransfer(struct PinCamParIn InputPinPar)

// ------------------------------------------------------------------------------------------------

/*!
*
* 生成鱼眼图像接口
*
* @param[in]  InputFishPar 用户输入鱼眼相机参数
* return PinCamParOut 输出3D渲染相机参数
*/
struct ImagePar FisheyeSyn(struct FishCamPar InputFishPar)
// ------------------------------------------------------------------------------------------------

/*!
*
* 包络线生成接口
*
* @param[in]  PinCamNum 用户输入相机数量
* @param[in]  EnvParList 用户输入包络线相机参数结构体指针
* @param[in]  EnvImSet 用户输入包络线图像参数结构体
* return ImagePar 输出图像数据
*/
struct ImagePar Envelope(int PinCamNum, struct EnvCamPar* EnvParList, struct EnvImPar EnvImSet)

// -------------------------------------------------------------------------------------------------

c# 封装后-------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;

namespace PanoCam.Interface
{
    /// <summary>
    /// 相机接口
    /// </summary>
    public static class IPanoCamera
    {
        /// <summary>
        /// 用户输入的针孔相机参数结构体
        /// </summary>
        public struct PinCamParIn
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
            public string CameraName;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public float[] Offset;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public float[] Angle;
            public float FocalLen;
            public float PixsSize;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
            public int[] Resolution;
        }
        /// <summary>
        /// 用于给南老师渲染图像的相机参数结构体
        /// </summary>
        public struct PinCamParOut
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
            public string CameraName;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public float[] Offset;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public float[] Angle;
            public float VerFOV;
            public float Aspect;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
            public int[] Resolution;
        }
        /// <summary>
        /// 用户输入的鱼眼相机参数结构体
        /// </summary>
        public struct FishCamPar
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
            public string CameraName;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public float[] Offset;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
            public float[] Angle;
            public float FocalLen;
            public float PixsSize;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
            public int[] Resolution;
            public float MaxFOV;
        }
        /// <summary>
        /// 输出图像性质结构体
        /// </summary>
        public struct ImagePar
        {
            public IntPtr ImagePtr;//三维数组指针unsigned char*
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
            public int[] Resolution;
        }
        /// <summary>
        /// 用户输入包络线相机参数结构体
        /// </summary>
        public struct EnvCamPar//
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 512)]
            public string CameraName;
            public int Flag;//用于储存切割集合体形状
            public float NearDist;
            public float FarDist;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
            public float[] FOV;
        }
        /// <summary>
        /// 用户输入包络线图像参数结构体
        /// </summary>
        public struct EnvImPar//
        {
            public float SecHeight;
            public float mPerBlock;
            public int MaxXBlockNum;
            public int MaxYBlockNum;
        }

// ------------------------------------------------------------------------------------------------

/*!
        *
        * 界面针孔相机参数转换为3D渲染相机参数的接口
        *
        * @param[in]  PinCamParIn 用户输入界面相机参数
        * return PinCamParOut 输出3D渲染相机参数
        */
        [DllImport("dllPort.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "CameraIOTransfer")]
        public static extern IntPtr CameraIOTransfer(IntPtr InputPinPar);

// ------------------------------------------------------------------------------------------------

/*!
        *
        * 生成鱼眼图像接口
        *
        * @param[in]  InputFishPar 用户输入鱼眼相机参数
        * return ImagePar  输出图像数据
        */
        [DllImport("dllPort.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "FisheyeSyn")]
        public static extern IntPtr FisheyeSyn(IntPtr InputFishPar);
        // ------------------------------------------------------------------------------------------------

/*!
        *
        * 包络线生成接口
        *
        * @param[in]  PinCamNum 用户输入相机数量
        * @param[in]  EnvParList 用户输入包络线相机参数结构体指针
        * @param[in]  EnvImSet 用户输入包络线图像参数结构体
        * return ImagePar 输出图像数据
        */
        [DllImport("dllPort.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "Envelope")]
        public static extern IntPtr Envelope(int PinCamNum, IntPtr EnvParList, IntPtr EnvImSet);

// -------------------------------------------------------------------------------------------------

}
}

c# C++接口封装 汽车模拟仿真的更多相关文章

  1. Java微信公众平台接口封装源码分享

    前言:      这篇博客是在三月初动手项目的时候准备写的,但是为了完成项目只好拖延时间写这篇博客,顺便也可以在项目中应用我自己总结的的一些经验.今天看来,这些方法的应用还是可以的,至少实现了我之前的 ...

  2. C++ Redis mset 二进制数据接口封装方案

    C++ Redis mset 二进制数据接口封装方案 需求 C++中使用hiredis客户端接口访问redis: 需要使用mset一次设置多个二进制数据 以下给出三种封装实现方案: 简单拼接方案 在r ...

  3. hiredis异步接口封装并导出到Lua

    hiredis异步接口封装并导出到Lua(金庆的专栏 2017.1)hiredis 不支持 Windows, Windows 下使用 wasppdotorg / hiredis-for-windows ...

  4. 基于Verilog的带FIFO输出缓冲的串口接收接口封装

    一.模块框图及基本思路 rx_module:串口接收的核心模块,详细介绍请见“基于Verilog的串口接收实验” rx2fifo_module:rx_module与rx_fifo之间的控制模块,其功能 ...

  5. U3D模拟仿真实现

    最近在做一个模拟仿真系统,数据源是一个实时数据库,场景中包含一些监测点.监测点给信号的方式是有物体到了监测点给上料信号,物体离开了监测点给下料信号:注意,如果有多个物体到达或离开监测点,那给信号的时间 ...

  6. vue2.0 + vux (五)api接口封装 及 首页 轮播图制作

    1.安装 jquery 和 whatwg-fetch (优雅的异步请求API) npm install jquery --save npm install whatwg-fetch --save 2. ...

  7. 基于Zabbix API文档二次开发与java接口封装

    (继续贴一篇之前工作期间写的经验案例) 一.           案例背景 我负责开发过一个平台的监控报警模块,基于zabbix实现,需要对zabbix进行二次开发. Zabbix官方提供了Rest ...

  8. 微信小程序“一劳永逸”的接口封装

    前言 最近都在研究小程序了,我可以的! 需求 之前都是用vue来开发项目的,接口模块我特意封装了一下.感觉也可以记录一下 小程序的接口虽说简单,但是重复调用那么多,显得不专业(一本正经的胡说八道) 还 ...

  9. Plx9030通讯卡驱动开发与接口封装

    在学校的时候,曾经采用DDK+Driverstudio+VC6.0环境做过9054视频采集卡的驱动开发,回想起调试过程,记得最清楚的就是过无数次的计算机蓝屏重启....今天第一天来到新公司,老大就说你 ...

随机推荐

  1. TF Boys (TensorFlow Boys ) 养成记(三)

    上次说到了 TensorFlow 从文件读取数据,这次我们来谈一谈变量共享的问题. 为什么要共享变量?我举个简单的例子:例如,当我们研究生成对抗网络GAN的时候,判别器的任务是,如果接收到的是生成器生 ...

  2. 最简单的方式理解Vue的自定义指令与混合

    vue.js 自定义指令 钩子函数:bindinsertedupdatecomponentUpdatedunbind 钩子函数完整实例:html: <div id="hook-argu ...

  3. CreateJSのeasel.js(一)

    CreateJS是基于HTML5开发的一套模块化的库和工具. 基于这些库,可以非常快捷地开发出基于HTML5的游戏.动画和交互应用. CreateJS为CreateJS库,可以说是一款为HTML5游戏 ...

  4. FIREDAC操作SQLITE内存数据库

    SQLite不仅可以把数据库放在硬盘上,还可以放在内存中,经测试,同样条件下数据库放在内存中比放在硬盘上插入记录速度快差不多3倍. 但数据库放在内存中时有如下缺陷: 1.断电或程序崩溃后数据库就会消失 ...

  5. PHP中常用的正则表达式由哪些元素构成?

    在程序开发中,我们常常要用到正则表达式,对于新手来说,很多时候知道正则表达式是怎么回事,但当真正需要使用的时候,却不知该用什么函数,具体的修饰符也比较混乱.下面小编就为大家整理了一些php正则表达式中 ...

  6. aehyok.com的成长之路一——开篇

    前言   不得不说最近三个月都没更新博客了,除了6月初的一篇博客外,今天的这一篇算是这三个月里发表的第二篇博客了.不过本人几乎每天都在博客园里刷来刷去,看大家发表的博文,从中汲取营养.确实博客园也可以 ...

  7. malloc钩子和内存泄漏工具mtrace、Valgrind

    一:malloc钩子函数 static void* (* old_malloc_hook) (size_t,const void *);static void (* old_free_hook)(vo ...

  8. 【Vegas原创】SVN的搭建及安装使用

    中文手册:http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/index.html 所需程序: 1,TortoiseSVN  http://so ...

  9. View 以Diaglog 方式展示

    OutAdmissionBookingEditor admissionBookingEditor = this.LayoutManager.OpenDialog<OutAdmissionBook ...

  10. Scala 深入浅出实战经典 第78讲:Type与Class实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...