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. AdaBoost算法简介

    一.AdaBoost的损失函数 AdaBoost优化的是指数损失,即\begin{align*} \mathbb{E}_{\boldsymbol{x} \sim \mathfrak{D}, y}[e^ ...

  2. 技巧~向URL地址添加参数

    只是个小技巧,感觉挺有用,拿出来分享一下 功能:在URL地址上添加参数,如果只有一个,会是?userid=1,需要是大于1个,会是&userid=1 实现: private string Ad ...

  3. 添加数据源,管理工具--数据源(ODBC),点击添加不显示该驱动

    win7系统下或者64位系统下,安装完mysql-connector-odbc驱动后,直接进入:管理工具--数据源(ODBC),点击添加不显示该ODBC驱动 问题解决如下: C:\Users\Admi ...

  4. Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分

    Android中build target,minSdkVersion,targetSdkVersion,maxSdkVersion概念区分 标签: build targetminSdkVersiont ...

  5. [leetcode]Find Minimum in Rotated Sorted Array @ Python

    原题地址:https://oj.leetcode.com/problems/find-minimum-in-rotated-sorted-array/ 解题思路:话说leetcode上面的二分查找题目 ...

  6. ThinkCMF 解决xss攻击问题

    最近使用ThinkCMF给某政府开发的一个平台,因为他们需要通过国家二级信息安全等级测试 所以自己先使用Appscan测试了一下,结果扫描出一个xss安全问题 测试的网址:http://www.xxx ...

  7. webService发布和调用--Axis2

    一.工具 1.下载 Axis2以及eclipse的Axis2插件.http://axis.apache.org/axis2/java/core/download.cgi 2.axis2-1.7.1-w ...

  8. 手机操控全站仪安卓版 测量员.app

    大家期待已久的智能化全站仪测量功能已经实现了, 简介 测量员是一款运行在智能手机上的测量应用程序,具有计算精确.轻松高效.智能便捷的特点.测量员可以应用在道路.桥梁.铁路.隧道.地铁.市政等工程中,除 ...

  9. Android开发(二十八)——基础功能函数

    /** * 判断事件是否在控件中 * * @param view * @param ev * @return * @see http://m.blog.csdn.net/blog/aygxylxk/8 ...

  10. Django 源码小剖: Django ORM 查询管理器

    ORM 查询管理器 对于 ORM 定义: 对象关系映射, Object Relational Mapping, ORM, 是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.从 ...