C# Halcon混合编程中遇到的问题(一)

  1. 目标平台
    安装64位的halcon的情况下,目标平台必须使用x64而不能使用x86
  2. 目标框架
    不能使用.Net Framework Client版本,有一些必须的程序集会缺失,测试使用.Net Framework 4.0能够正常。
  3. HObject 和 C#中的对象的互相转换问题。
    在混合编程中,这个应该是一个大问题,我之前之所以一直没有意识到这个问题,是因为虽然说我在做混合编程,但是实际上我只是在C#的环境中用一些halcon中的算子玩了一下,
    在wpf中的图像显示使用的也是halcon提供的控件。
    当前我所遇到的问题是HObject 和 BitmapImage的转换问题,我在wpf中使用了一个Image控件,Source应该是ImageSource类型的。
    根据网上的资料来看,这个过程可能涉及到两个转换:HObject转换为Bitmap,Bitmap转换为ImageSource。
    在不考虑耗时且确实有保存图片的需求的情况下,找了一个规避类型转换的方法:将HObject类型的图片保存下来,再读取成ImageSource。
    但是在考虑耗时的问题且不需要保存图片的情况下,文件的读写估计是低效的,必须找一个可以转换的方法。
    参考文档:https://blog.csdn.net/qq_20161893/article/details/78580036
    https://blog.csdn.net/jiuzaizuotian2014/article/details/81279423
    https://codeday.me/bug/20180824/228349.html
    https://docs.microsoft.com/en-us/dotnet/api/system.drawing.bitmap.gethbitmap?view=netframework-4.8

    测试过程中遇到点问题,转换成Bitmap的时候间或出现内存被破坏的问题,具体处理方式还要再找找再想想。unsafe用的也不是很愉快。

原文地址:https://www.cnblogs.com/yutou2016/p/11310836.html

时间: 2024-10-11 10:53:01

C# Halcon混合编程中遇到的问题(一)的相关文章

解决问题1:可以从桌面显示到FORM MFC/HALCON混合编程系列一_打开图像_简单处理_

没法爱上新浪  转载:http://blog.sina.com.cn/s/blog_812e326f010110og.html 从图1到图2 图1(在桌面显示了) open_window(0,0, Width/2, Height/2,0,"visible","",&WindowHandle); 更改为: Hlong MainWndID =(Hlong) m_hWnd; open_window(0,0, Width/2, Height/2,MainWndID,

在OC项目中添加Swift文件并实现混合编程

对于已经工作的开发者,并不适合也没有条件从一个全新的swift项目开始,进行开发. 虽然网上关于swift和oc混合编程的教程比较多,但是大多是基于 swift项目的,所以对咱们 OCer的参考价值有一定折扣. 现在swift虽然仍然存在很多缺陷,但是鉴于苹果的强势,是时候在项目中把简单的功能交给swift了,给自己,给项目,给swift一个缓冲区,都是极好的. 说了这么多,开始上代码. 现在的背景是: 已经有一个oc项目了,我想要加入 swfit,并且实现 oc调用 swift ,swift调

混合编程杂谈续——发布

上一篇简单的描述了一下混合编程中C++与python混合编程的操作,基本环节的搭建应该是没有什么问题了,这一篇说一下C++与python混合编程的发布问题,因为我们不能让客户和我们一样去了解程序的实现原理,他们要的只是一个结果,可以正常运行的程序,并不关心你的实现方式.因此我们要提供一个安装包,不依赖具体环境的可执行的程序. 在上一篇中我们实现了可以调用python脚本的环境,但是它的运行强烈的依赖环境,所以今天我们就要解决这个问题,将程序发布到其他别的机器上时不受限制. 今天在网上看了好多例子

C# 托管和非托管混合编程

在非托管模块中实现你比较重要的算法,然后通过 CLR 的平台互操作,来使托管代码调用它,这样程序仍然能够正常工作,但对非托管的本地代码进行反编译,就很困难. 最直接的实现托管与非托管编程的方法就是使用C++/CLI 介绍 项目存档一直是企业的采用的做法,而是事实证明他们也是对的!对于一个程序员,这是几千men-days的工作量.为什么不开发一小段代码去重新利用那段代码,项目. 现在提供了一个渐渐的转向C#的新技术: 使用托管与非托管的混合编程.这是一个可行的方案在top-down issue(f

Matlab.NET混合编程技巧之——直接调用Matlab内置函数(附源码)

原文:[原创]Matlab.NET混合编程技巧之--直接调用Matlab内置函数(附源码) 在我的上一篇文章[原创]Matlab.NET混编技巧之--找出Matlab内置函数中,已经大概的介绍了matlab内置函数在混合编程中的优点,并通过程序找出了matlab中的大部分内置函数,当然更多人关心是如何像我所说得那样,不用直接编译,就直接在C#中调用这些内置函数.本文就带你揭开这些谜团. 声明,这篇文章是需要一点点混合编程基础的,基本概念和过程要懂一点,如果能简单成功混编一个简单的计算或者绘图例子

ATL - JavaScript混合编程

JavaScript混合编程- ATL 最后更新日期:2014-5-10 环境:Windows8.1 64bit英文版,Visual Studio 2013 Professional Update1英文版 阅读前提:COM的基本概念 内容简介 ATL(ActiveTemplate Library)是微软为了简化COM编程提供的一套C++模板,这里介绍如何用ATL建立一个简单的轻量级COM服务供JavaScript脚本调用,使我们对ATL的使用有个概念. Hello,World 使用Adminis

FORTRAN & MATLAB 混合编程

[email protected] 第一部分:Fortran调用Matlab引擎 1  什么是Matlab引擎 所谓Matlab引擎(engine),是指一组Matlab提供的接口函数,支持C/C++.Fortran等语言,通过这些接口函数,用户可以在其它编程环境中实现对Matlab的控制.可以主要功能有: ★ 打开/关闭一个Matlab对话: ★ 向Matlab环境发送命令字符串: ★ 从Matlab环境中读取数据: ★ 向Matlab环境中写入数据. 与其它各种接口相比,引擎所提供的Matl

matlab和C/C++混合编程--Mex

最近的项目需要matlab和C的混合编程,经过一番努力终于完成了项目要解决的问题.现在就将Mex的一些经验总结一下,当然只是刚刚开始,以后随着学习的深入继续添加.首先讲讲写Mex的一些常规规定,然后我们会重点关注混合编程中最难解决数据的问题--结构到底如何转换,并且后面会重点说一下自己的程序. 一.Mex的结构 先看一个简单的程序(该程序保存在matlab主目录下名字是mexDemon.cpp,或者在主目录下新建一个.cpp文件): #include "mex.h" //加入头文件,该

halcon与C#混合编程进阶版

这篇主要是C#和Halcon的混合编程,在此基础上对按键不同功能的划分,以及图片适应窗口和从本地打开图片. 新手来这里:http://www.cnblogs.com/badguy518/p/5515054.html halcon源程序: dev_open_window(0, 0, 512, 512, 'black', WindowHandle) read_image (Image, 'C:/Users/Administrator/Desktop/猫.jpg') dev_display(Image