MapX编程详解(C++)----MapX发布技术

MapX编程详解(C++)

       ----MapX发布

 

 

 

        基于MapX的软件开发好后,安装在客户机上,需要MapX的支持,如果把所需的MapX的相关文件发布的客户机上,最简单的方法当然是在客户机上安装一套MapX的软件,可是MapX容量大,安装麻烦,而且要独立安装,不适合软件的发布。如何解决这个问题呢?当然是提取所需的MapX文件,通过打包发布工具安装到客户机上。所需文件主要有些动态库还有些特殊文件,下面我以MapX5.0为例,以下是所需文件的下载链接:http://download.csdn.net/detail/mingojiang/5094082。已破解,可直接使用,密钥在MapX50.lic文件里,开发的时候复制其中的密钥即可。其中注册MapX50.DLLmdatasetint.tlb即可,MapX50.DLL通过Regsvr32.exe来注册,mdatasetint.tlb通过RegTypLib.exe来注册,以下是Inno SetUp的发布代码:

[Files]

Source: "F:\Temp\RegTypLib.exe";DestDir: "{sys}"; Flags: onlyifdoesntexist

Source: "F:\Temp\regsvr32.exe";DestDir: "{sys}"; Flags: onlyifdoesntexist

 

Source: "F:\地图引擎\*"; DestDir: "{app}\MapInfo\MapX 5.0"; Flags:ignoreversion recursesubdirs createallsubdirs

Source: "F:\地图引擎\MAPX50.DLL"; DestDir: "{app}\MapInfo\MapX 5.0";Flags: onlyifdestfileexists regserver

Source: "F:\地图引擎\mdatasetint.tlb"; DestDir: "{app}\MapInfo\MapX 5.0";Flags: onlyifdestfileexists regtypelib

 

如果遇到麻烦,请加QQ1148824289,技术交流。

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将圆柱形全景图展开,需要使用OpenCV和numpy库。以下是展开圆柱形全景图的步骤: 1. 读取圆柱形全景图像,并将其转换为equirectangular格式。这可以通过使用OpenCV的cv2.projectPoints函数来实现。 2. 创建一个目标图像,其大小为展开后的图像大小。这可以通过计算出展开后的图像的宽度和高度来实现。 3. 对目标图像进行遍历,将每个像素的坐标转换为圆柱形全景图像中的坐标。 4. 在圆柱形全景图像中找到对应的像素值,并将其复制到目标图像中的相应位置。 5. 返回展开后的图像。 以下是代码实现: ```python import cv2 import numpy as np def unwarp_cylinder(img): # Convert equirectangular image to cylindrical image K = np.array([[1000, 0, img.shape[1]/2], [0, 1000, img.shape[0]/2], [0, 0, 1]]) dist_coeffs = np.zeros((4,1)) h,w = img.shape[:2] mapx,mapy = cv2.initUndistortRectifyMap(K,dist_coeffs,None,K,(w,h),5) cylindrical_img = cv2.remap(img,mapx,mapy,cv2.INTER_LINEAR) # Unwrap cylindrical image to planar image f = 1000 height, width = cylindrical_img.shape[:2] h = np.arange(height).reshape(-1, 1).astype(np.float32) theta = (np.arange(width).reshape(1, -1) / f).astype(np.float32) x = np.sin(theta) y = np.cos(theta) z = np.ones_like(theta) xyz = np.stack((x, y, z), axis=-1) uv = np.matmul(xyz, K.T).squeeze() u = (uv[:, 0] / uv[:, 2]).reshape(-1, 1).astype(np.float32) v = (uv[:, 1] / uv[:, 2]).reshape(-1, 1).astype(np.float32) u = (u / width) * 2 * np.pi v = (v / height) * np.pi x = np.sin(u) y = v z = np.cos(u) xyz = np.stack((x, y, z), axis=-1) uv = np.matmul(xyz, K.T).squeeze() u = (uv[:, 0] / uv[:, 2]).reshape(-1, 1).astype(np.float32) v = (uv[:, 1] / uv[:, 2]).reshape(-1, 1).astype(np.float32) u = ((u / (2 * np.pi)) * width).astype(np.int) v = ((v / np.pi) * height).astype(np.int) planar_img = np.zeros((height, width, 3), dtype=np.uint8) for i in range(height): for j in range(width): if 0 <= u[i, j] < width and 0 <= v[i, j] < height: planar_img[i, j] = cylindrical_img[v[i, j], u[i, j]] return planar_img ``` 调用该函数并传入圆柱形全景图像,即可得到展开后的图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MingoJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值