一直以来,我使用的方法都是shiqiyu在opencvchina上面提供的引入directshow,并且采用cvvimage和cameraDs的方法。这个方法虽然在xp/win7/win8下面都能够成果使用,但是一直以来我都没有动机去深入看一看这个方法。这次在知乎上面看到 jie wu 提出的“将Opencv窗口添加到PictureControl”中的方法,感到思路很好,进行了具体实现

http://pan.baidu.com/s/1nuixdhR

具体可以看代码,我帖一些主要代码
void CMfcRibbonTemplateView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
//根据控件的大小设置初始帧的大小
CRect rect;
GetDlgItem(IDC_PBSRC) ->GetClientRect( &rect ); // 获取控件尺寸位置
m_lframe = Mat::zeros(rect.Height(),rect.Width(),CV_8UC3);
GetDlgItem(IDC_PBSRC) ->GetClientRect( &rect );
m_rframe = Mat::zeros(rect.Height(),rect.Width(),CV_8UC3);
//绑定Mat到Picturebox上去
namedWindow("src",WINDOW_AUTOSIZE);
HWND hWnd = (HWND)cvGetWindowHandle("src");
HWND hParnt = ::GetParent(hWnd);
::SetParent(hWnd,GetDlgItem(IDC_PBSRC)->m_hWnd);
::ShowWindow(hParnt,SW_HIDE);
namedWindow("dst",WINDOW_AUTOSIZE);
hWnd = (HWND)cvGetWindowHandle("dst");
hParnt = ::GetParent(hWnd);
::SetParent(hWnd,GetDlgItem(IDC_PBDEST)->m_hWnd);
::ShowWindow(hParnt,SW_HIDE);
}
 
; ;
.);
.,iwidth,iheight);
pwnddst.,iwidth,iheight);
}
}
 
)
cvtColor(dst, dst, CV_GRAY2BGR);
resize(dst,dst,Size(rect.Width(),rect.Height()));
imshow("src",dst);
}
总体感到jie wu
提出的方法,对于解决比较简单的问题,的确是不错的(我记得halcon生成能够被csharp调用的代码的时候,好像采用的就是类似的方法)。但是它本身存在以下问题:
1、在窗体初始化的时候会有一个黑框弹出来,应该是nameWindow的效果;
2、在没有图片的时候,会自动将Picturebox的背景绘制成为灰色,而且好像不好控制;
3、仅仅是imshow还不能完成全部的调用,比如控件的大小可能还会变化,那么就需要用showimage重新进行封装。
如果加上这些7788的东西,那么最后调用起来,也是比较复杂的。
但是jie
wu的方法有一个天生的优点,就是可以调用high gui的callback机制,这个是非常强的东西,能够省不少麻烦事情。
这里只是我粗浅的认识,若有不对之处,欢迎批评指正。
最后说一句,其实看了一些opencv自己的代码,它里面有很多地方就是iplimage和mat相互转换的,很多使用mat接口的函数,只不过是把以前的使用iplimage的函数重新包装了一次。opencv毕竟是一个开源的类库,还有很多地方需要大家一起做得更好。
 

知乎上有一个问题“在mfc框架中,有上面方法能直接将opencv2.0库中的Mat格式图片传递到Picture Control”中显示?的更多相关文章

  1. VS2010/MFC常用控件:图片控件Picture Control

    图片控件Picture Control 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到 ...

  2. VS2010/MFC编程入门之二十七(常用控件:图片控件Picture Control)

    上一节中鸡啄米讲的是滚动条控件,本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文 ...

  3. MFC中在picture control中显示CBitmap图像的方法

    CStatic *pStatic1 = (CStatic *)GetDlgItem(IDC__IMAGE_STATIC2); CBitmap cbmp; cbmp.LoadBitmap(MAKEINT ...

  4. Python爬取知乎上搞笑视频,一顿爆笑送给大家

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:Huangwei AI 来源:Python与机器学习之路 PS:如有需 ...

  5. 对话框上动态控件的创建、在Picture Control控件上显示图片

    1  MFC对话框之上的动态控件的创建 对话框上的控件是MFC类的一个具体对象. 当在对话框之上使用静态控件时,可以根据类向导来为每个控件添加消息.响应函数以及变量. 当需要在对话框中动态的创建某个控 ...

  6. 介绍MFC框架中涉及到的设计模式(二)

    接着上一篇<介绍MFC框架中涉及到的设计模式(一)>介绍 单例模式(Singleton Pattern) 单例模式是一种经常使用的软件设计模式.在它的核心结构中仅仅包括一个被称为单例类的特 ...

  7. 知乎上一个关于Android面试的问题答案

    由于链接出错,这里附上原文链接:Touch Me 前段时间面试,自己以及小伙伴们简要的汇总的一些面试问题,可以对照的参考一下吧- 建议就是在面一家公司之前了解好这个公司的app是以什么为驱动的,例如电 ...

  8. 在知乎上看到 Web Socket这篇文章讲得确实挺好,从头看到尾都非常形象生动,一口气看完,没有半点模糊,非常不错

    在知乎上看到这篇文章讲得确实挺好,从头看到尾都非常形象生动,一口气看完,没有半点模糊,非常不错,所以推荐给大家,非常值得一读. 作者:Ovear链接:https://www.zhihu.com/que ...

  9. 一个简单的mfc单页界面文件读写程序(MFC 程序入口和执行流程)

    参考:MFC 程序入口和执行流程  http://www.cnblogs.com/liuweilinlin/archive/2012/08/16/2643272.html 程序MFCFlie      ...

随机推荐

  1. 实验10.3_数值显示拓展_dword型数转变为表示十进制数的字符串

    assume cs:code data segment db 10 dup (0) data ends code segment start : mov ax,4240H;F4240H=1000000 ...

  2. Leetcode: Shuffle an Array

    Shuffle a set of numbers without duplicates. Example: // Init an array with set 1, 2, and 3. int[] n ...

  3. sql server create foreign key

    in table design view(right click table and choose design), right click on a column, and select 'rela ...

  4. 对while((pid = waitpid(-1, &stat, WNOHANG)) > 0)不懂的地方,现在懂了

    while((pid = waitpid(-1, &stat, WNOHANG)) > 0) 需要写到信号处理函数中,假如有10个子进程 只要父进程能够收到最后一个信号,就能把前面丢失的 ...

  5. eclipse jdk配置

    eclipse版本jdk有个默认版本.例如java SE 8[1.8.0_45] 有时候导入一个项目会碰到很奇怪的编译错误.这一般是编译jdk版本导致的. 解决方法:选择任何一个项目-buildpat ...

  6. 夺命雷公狗—angularjs—17—angularjs的静态库

    在实际的开发中我们往往已经离不开我们的静态库了,因为那里面有太多强悍的功能了,比如路由都是通过一个angular-route的库来实现的,, 那个库,我们可以在百度静态资源公共库来查找,查找方法如下所 ...

  7. [Ubuntu] Ubuntu搭建VPN服务器pptpd

    在 Ubuntu 上搭建 VPN 服务器的方法非常多,比较著名的有 PPTP, L2TP/IPSec 和 OpenVPN. 这三种方式中后两者的安全性比较好,但配置较麻烦.其中 OpenVPN 在 W ...

  8. InstallShield 下载安装

    好久没有写项目了,昨晚加班给一位淘客写了一个Winform小程序, 今早发布,然后发现微软将软件发布的这块内容交给了一个第三方插件 InstallShield, 不知道微软是何用意,我们还是看看如何安 ...

  9. Ubentu搭建nfs服务器

    搭建nfs服务    功能:完成在线调试程序,远程挂载,在线调试    NFS(Network FileSystem,网络文件系统)是由SUN公司发展,并于1984年推出的技术,用于不同机器,不同操作 ...

  10. 【py网页】urllib模块,urlopen

    Python urllib 库提供了一个从指定的 URL 地址获取网页数据,然后对其进行分析处理,获取想要的数据. 下面是在 Python Shell 里的 urllib 的使用情况: 01 Pyth ...