社区
图形处理/算法
帖子详情
IplImage类型如何转化为Image
li150dan
2010-09-27 06:47:01
本人现在遇到的问题是:想把Opencv中IplImage类型的图像转化为Image类型,以便将图像显示在 PictureBox控件上,希望各
位高手给予指点,谢谢!
...全文
268
7
打赏
收藏
IplImage类型如何转化为Image
本人现在遇到的问题是:想把Opencv中IplImage类型的图像转化为Image类型,以便将图像显示在 PictureBox控件上,希望各 位高手给予指点,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
li150dan
2010-10-07
打赏
举报
回复
谢谢以上高手的指点
zjAngle
2010-09-28
打赏
举报
回复
查找OPENCV的书看一下,应该有相关函数啊!我也不怎么懂,接触的很少,见谅!
fengbingchun
2010-09-28
打赏
举报
回复
只要分别掌握它们的存储形式就可以了
xiuxianshen
2010-09-28
打赏
举报
回复
看懂两个类型的数据结构就会了
conan_unary
2010-09-28
打赏
举报
回复
HDC hdc_window=GetDlgItem(IDC_STATIC_PIC)->GetDC()->GetSafeHdc();
RECT rect_window;
::GetClientRect(GetDlgItem(IDC_STATIC_PIC)->m_hWnd,&rect_window);
CvvImage Drawer;
Drawer.CopyOf(pIpl);
Drawer.DrawToHDC(hdc_window,&rect_window);
pIpl为IplImage类型变量
百事烟
2010-09-28
打赏
举报
回复
IplImage->imageData
就是bmp图片的数据buf
wwgddx
2010-09-28
打赏
举报
回复
copytodc 然后从DC保存下来
opencv中Mat、CvMat、
Ipl
Image
、
Ipl
Image
*之间转换程序
opencv中Mat、CvMat、
Ipl
Image
、
Ipl
Image
*数据
类型
之间转换方法
VC2008_OpenCV2.3.1图像处理平台
【目的】 1、了解OpenCV在MFC框架中的使用,建立基于VC + OpenCV的图像处理平台; 2、在此基础上实现简单的图像处理操作,包括图像的打开、显示、放大、缩小、保存。 【版本】 VC2008 + opencv 2.3.1 【详细实现步骤】 1、VC2008编译环境设置:工程中已预先设好,为保证能编译成功,自己需重新设置(include/lib/bin路径,略。。。); 2、视图显示选择OpenCV老式显示方法Cvv
Image
,将Cvv
Image
文件夹下两个文件加入工程中,stdafx.h中加入【#include "Cvv
Image
/Cvv
Image
.h"】 3、CMFC_OpenCVDoc文档类中加入变量: Mat m_origin
Image
;//原始图像 Mat m_
Image
;//中间处理图像 4、重载虚函数OnOpenDocument函数,代码如下: BOOL CMFC_OpenCVDoc::OnOpenDocument(LPCTSTR lpszPathName) { if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE; //使用Mat矩阵读取图像数据 m_origin
Image
= imread((char*)lpszPathName); //原始数据留存,数据操作在m_
Image
上进行 m_origin
Image
.copyTo(m_
Image
); return TRUE; } 5、重载虚函数OnSaveDocument,代码如下: BOOL CMFC_OpenCVDoc::OnSaveDocument(LPCTSTR lpszPathName) { if (!m_
Image
.empty()) { imwrite((char*)lpszPathName, m_
Image
); } return TRUE; } 6、视图类CMFC_OpenCVView中加入变量: C
Image
m_show
Image
;//图像显示变量 7、视图类CMFC_OpenCVView中OnDraw函数改写如下: void CMFC_OpenCVView::OnDraw(CDC* pDC) { CMFC_OpenCVDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; if (pDoc->m_
Image
.empty()) { return; } //获取需要显示的图像
Ipl
Image
* piI = &(pDoc->m_
Image
.operator
Ipl
Image
()); //
转化
为合适显示的
类型
m_show
Image
.CopyOf( piI ); //获取显示设备窗口 CRect rect; GetClientRect(▭); //把显示区的宽度设为图像的真实宽度和高度 rect.right=m_show
Image
.Width(); //Cvv
Image
:Width()计算图像的宽度,单位像素 rect.bottom=m_show
Image
.Height();//Cvv
Image
:Height()计算图像的高度,单位像素 //定义一个CSize对象,用于保存滚动条的尺寸,设为图像的真实尺寸 CSize sizeTotal(rect.right,rect.bottom); SetScrollSizes(MM_TEXT, sizeTotal);//设置滚动条的位置 //调用Cvv
Image
类的成员函数DrawToHDC在视图窗口显示图像 //函数形参为当前的设备环境和显示区大小 m_show
Image
.DrawToHDC(pDC->GetSafeHdc(),rect); } 8、滚动条显示设置: 视图类CMFC_OpenCVView需继承于CScrollView类,而不是CView类,需要改动的地方还有,将以下语句 IMPLEMENT_DYNCREATE(CMFC_OpenCVView, CView) BEGIN_MESSAGE_MAP(CMFC_OpenCVView, CView) 改为: IMPLEMENT_DYNCREATE(CMFC_OpenCVView, CScrollView) BEGIN_MESSAGE_MAP(CMFC_OpenCVView, CScrollView); 另外,初始化时重载OnInitialUpdate函数如下: void CMFC_OpenCVView::OnInitialUpdate() { CScrollView::OnInitialUpdate(); // TODO: 在此添加专用代码和/或调用基类 CSize sizeTotal; sizeTotal.cx = sizeTotal.cy = 60; SetScrollSizes(MM_TEXT, sizeTotal); }
利用OpenCV中对图像数据进行64F和8U转换的方式
在OpenCV中很多对数据的运算都需要转换为64F
类型
,比如伽玛变换,这个很明显要求幂的底数是double
类型
~ 而cvShow
Image
()又要求是U8才能显示,否则显示出来是一片空白! 所以经常要进行转换,怎么做呢?看了下面的几行代码你就知道了!
Ipl
Image
*pSrc
Image
= cvLoad
Image
(pout.jpg, CV_LOAD_
IMAGE
_UNCHANGED);
Ipl
Image
*pGray
Image
_8U = cvCreate
Image
(cvGetSize(pSrc
Image
),
IPL
_DEPTH_8U, 1);
Ipl
Image
*pGray
Image
_
【OpenCV学习笔记】【
类型
转换】一(
Ipl
Image
和cv::Mat的
类型
相互转换)
先假设img为cv::Mat
类型
,而
Image
为
Ipl
Image
类型
cv::Mat-->
Ipl
Image
Image
=
Ipl
Image
(img); 反过来,
Ipl
Image
-->cv::Mat如下 cv::Mat img(
Image
, 0); 不会复制内容,只是二者共用数据,即.data指向同一存储区,但各有各自的header。 我查了下二者的定义,发现
Ipl
Imag
Mat和
ipl
image
类型
转换
opencv1.0与opencv2.0中不同的数据
类型
转换问题
图形处理/算法
19,469
社区成员
50,697
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章