- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我开发了一个使用 OpenCV 的非托管 C++ 编写的应用程序,直到现在我一直在使用内置的 highgui 库来显示结果。
现在我想与 VB.net 开发人员一起将其打包成适合销售的产品。
我决定做的两个增强是添加一个 GUI,其次通过用 3rdParty 解决方案替换它来改进人脸识别模块。
问题在于 3rdParty SDK 只有一个 C# API,显然其他程序员想在 VB 中实现该接口(interface)。
我可以将我的代码移植到 C# 并使用 EmguCV 一石二鸟,但是代码库非常大,我认为我没有时间,但这是一个选择。
我想知道从这里到哪里去。我是否移植到 MC++,混合使用 native 和托管程序集,自己在 Qt 中编写 GUI,等等
另外,如何在 .NET WinForm 控件中显示 Iplimage 流?
最佳答案
在您的情况下,是否可以实现 OpenCV native 代码的一些简单、高级 API,以便使用 PInvoke 轻松地与 C# 互操作?我过去遇到过类似的问题,我所做的是将我的 native 代码与大约 15 个可以从 C# 轻松使用的函数(使用 PInvoke)打包在一起。我不知道在你的情况下是否可以轻松地做到这一点,如果不行,你可能会尝试在 MC++ 中编写几个类并尝试使用 MC++ 编译你的 OpenCV 代码,毕竟,C++/CLI 的主要用途是创建一个 native c++ 和托管语言之间的桥梁(尽管如此,我个人仍然更喜欢制作漂亮的 native API 并从 C# 调用它。
至于 IplImage,如果您使用的是 EmguCV,则有一个 .Bitmap
属性可为您提供可使用的托管 System.Drawing.Bitmap
类,而无需复制底层缓冲区(我在我的应用程序中渲染了来自相机的 5 个实时流,并且效果很好)。另一方面,如果您想手动完成,而不使用 EmguCV,我鼓励您检查他们的源代码,看看他们如何实现此功能并自己完成(基本上,您需要获取内存指针并获得一些属性,比如图像步幅、宽度、高度,并使用它们自己创建 Bitmap
类)。
编辑:我找到了一些我用来渲染在 OpenCV 中处理过的图像的代码:
C++代码:
void __stdcall GetRectifiedImage(Calibration* calib, int left, int** dataPtr, int* stride)
{
CvMat* mat = ((CalibrationImpl*)calib)->imagesRectified[left > 0 ? 0 : 1];
*dataPtr = mat->data.i;
*stride = mat->step;
}
这段代码基本上是填充 dataPtr 和步幅(假设宽度和高度已知)
C#调用:
[DllImport("Stereo.dll")]
public static extern void GetRectifiedImage(IntPtr calib, int left, out IntPtr data, out int stride);
C# 用法(使用 EmguCV):
StereoNative.GetDepthImage(calib, out ptr, out stride);
pictureBox5.Image = new Image<Gray, byte>(640, 480, stride, ptr).Bitmap;
如果没有 Emgu,您将需要了解它们如何实现 .Bitmap
属性,然后自己动手制作您自己的 Bitmap
对象。
关于c# - 如何在带有 VB.net GUI 的 C++ OpenCV 项目中使用 C# 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5512255/
我有几个问题。我是 Visual Basic 这个领域的新手,所以不要取笑我。 1.) VB.NET之间有什么区别和 VB ? 2.) 我需要为 Windows 开发基本的应用程序。(如记事本)我应该
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是框架 3.5 的新手。我注意到,在创建 Web 内容表单时,除了 aspx.vb 页面之外,它还会创建一个 aspx.designer.vb 页面。谁能向我解释一下它们之间的区别以及它们的用途吗?
我只是想知道 VB.NET 和 VB 2010 是否相同。 我只是想知道。 最佳答案 VB 2010 是 VB.Net 的最新版本。 Microsoft 在 VB 2005 版本中删除了 VB 的“.
我是框架 3.5 的新手。我注意到,在创建 Web 内容表单时,除了 aspx.vb 页面之外,它还会创建一个 aspx.designer.vb 页面。谁能向我解释一下它们之间的区别以及它们的用途吗?
我正在尝试将 VB 函数移植到 VB.NET,但我无法使该函数正常工作并正确更新。 rFormat = Format(Format(Value, fmt), String$(Len(fmt), "@"
如何在VB中注释多行代码/代码块? 最佳答案 VB 在语言级别上没有这样的构造。它有使用撇号字符的单行注释: ' hello world ' this is a comment Rem this is
我正在使用我在 VB2005 中创建的表单在按下按钮时打开程序,然后在文本字段中显示进程 ID(再次按下按钮时)。当我运行它时,表单将打开程序 (Notepad.exe) 但当我单击按钮查看进程 ID
我正在尝试添加一个从 vb.net 创建的 dll,并且想将其导入到现有的 vb 6 项目中,但它给了我错误“无法添加对指定文件的引用”。 。有人知道如何解决这个问题吗? 最佳答案 需要遵循以下步骤:
我有一个数据 GridView 。右键单击它会显示一个上下文菜单,但它始终位于右上角。我想要它,以便菜单出现在用户右键单击的单元格上。它可能是单元格 1 或单元格 2 或其他。 谢谢福尔坎 最佳答案
我只是在 Visual Studio 2010 中使用 Visual Basic。有人知道我将如何制作“浏览文件夹(或文件)”按钮吗?我对 VB 真的很陌生,我只是在寻找一些简单的帮助:) 最佳答案
这次感到困惑... 最简单的代码行有时可能起作用,有时却没有。首先,我认为问题在于我试图读取DWORD的值,但是由于我可以从某些键读取DWORD值,所以这一定不是问题。现在的问题似乎是,如果 key
我的代码中有此方法: Private Sub Display() Received.AppendText(" - " & RXArray) End Sub 这两个调用之间有什么区别:
我正在创建一个宏程序来记录和回放鼠标和键盘输入。录制效果很好,鼠标播放也一样,但是我在播放键盘输入时遇到了麻烦——特别是在释放之前按住一个键几秒钟。这不等同于重复按键。这是我尝试过的: 技巧 1:Me
我最近刚刚了解了 VB.NET 中静态局部变量的使用,并想知道它在延迟加载属性中的潜在用途。 考虑以下示例代码。 Public Class Foo Implements IFoo End Clas
VB 有一个 C# 没有的特性,在项目级别导入命名空间(我的项目>引用>导入命名空间)。当新人在源代码控制之外检查项目时,我们的自定义导入不包括在内。这个 VB 特定的导入命名空间存储在哪里? 最佳答
我已将我的问题缩小到这个简单的案例,但似乎无法找到发生了什么: 我有两个表单,一个只有一个按钮,另一个是空的。 单击按钮时,form1 隐藏和显示 form2 出现时,form2隐藏,form1再次显
为什么下面的简单代码会失败?无论我使用 LinearGradientMode 的哪个值,这段代码总是用从左到右的渐变填充路径。 graphPath 是在别处创建的 GraphicPath 对象(基本上
我可以多快替换字符串中的字符? 所以这个问题的背景是这样的:我们有几个应用程序通过套接字相互通信并与客户端的应用程序通信。这些套接字消息包含不可打印的字符(例如 chr(0)),需要用预定的字符串(例
如何从任何文件中读取原始字节数组... Dim bytes() as Byte ..然后将该字节数组写回新文件? 我需要它作为一个字节数组来做一些处理。 我目前正在使用: 阅读 Dim fInfo
我是一名优秀的程序员,十分优秀!