在线等:opencv读取AVI视频获取到得图片内存对齐问题

camelisi 2010-12-21 10:10:09
RT,一个小程序里面要用到的一个功能,我贴一部分代码,愿达人们指教下:

CFileDialog dlg( true, NULL, NULL, NULL, _T("*.avi|*.avi||)"), NULL );
CString filePath;
if (dlg.DoModal() == IDOK)
{
filePath = dlg.GetPathName();
}
else
{
return;
}

m_pCapture = cvCreateFileCapture( (LPCTSTR)filePath );
iFps = cvGetCaptureProperty( m_pCapture, CV_CAP_PROP_FRAME_COUNT ); // 获取当前视频帧数
CString frameNum;
frameNum.Format( _T("%d"), iFps);

m_editStr1 = frameNum;
m_curFrame = "1";
UpdateData(FALSE);
m_pDC = GetDlgItem(IDC_PIC) ->GetDC(); // 获得显示控件的 DC
m_hDC = m_pDC ->GetSafeHdc(); // 获取 HDC(设备句柄) 来进行绘图操作
m_pCurFrame = cvQueryFrame( m_pCapture ); // 获取视频第一帧
m_unHeight = m_pCurFrame->height;
m_unWidth = m_pCurFrame->width;

GetDlgItem(IDC_PIC)->GetWindowRect(&g_dlgRec);
GetDlgItem(IDC_PIC)->GetParent()->ScreenToClient(&g_dlgRec);

GetDlgItem( IDC_PIC) ->GetClientRect( &m_picRect );
SetRect( m_picRect, g_dlgRec.left , g_dlgRec.top , g_dlgRec.left + m_unWidth , m_unHeight + g_dlgRec.top );
GetDlgItem(IDC_PIC)->MoveWindow(&m_picRect);
GetDlgItem(IDC_PIC)->GetWindowRect(&g_dlgRec);//获取控件相对于屏幕的位置
ScreenToClient(g_dlgRec);//

if( !m_pCurFrame ) return;
curImage.CopyOf( m_pCurFrame ); // 复制图片

picRec.left = 0;
picRec.top = 0;
picRec.right = m_unWidth;
picRec.bottom = m_unHeight;
curImage.DrawToHDC( m_hDC, &picRec ); // 将图片绘制到显示控件的指定区域内
// 这里显示的时候,图片会出现偏左的现象,我在Picture控件上
// 响应鼠标点击时,然后将鼠标点击的点对应图片上的
// 像素点变成红色,而这个点都会在鼠标点击的点的左下方

大致代码就这么些,IlpImage的结构也了解,但是不清楚这里是怎样内存对齐的?我想让鼠标点击时候的坐标对应图片上的像素坐标,怎么解决这个问题呢?
...全文
241 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
camelisi 2010-12-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fengbingchun 的回复:]
图片为何偏左呢?

http://www.cnblogs.com/shitouer/archive/2010/04/08/1707686.html
[/Quote]
我看了你的文章,写得不错,我这个问题感觉是结构体中char *中的数据字节对齐,我看过别人的一篇文章,谈到过这个问题,貌似是每行都有一定的内存空间对齐,越到后面偏得越厉害,可惜文章后来找不到了。。。
fengbingchun 2010-12-22
  • 打赏
  • 举报
回复
图片为何偏左呢?

http://www.cnblogs.com/shitouer/archive/2010/04/08/1707686.html

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧