以文本方式查看主题

-  机器视觉技术论坛|工业图像处理技术论坛  (http://www.jqsj.com/forum/index.asp)
--  【大恒摄像机】  (http://www.jqsj.com/forum/list.asp?boardid=8)
----  使用DH—HV1302UM—T数字摄像头采集图象输出窗口问题  (http://www.jqsj.com/forum/dispbbs.asp?boardid=8&id=154)

--  作者:xy365
--  发布时间:2006-8-22 9:25:10
--  使用DH—HV1302UM—T数字摄像头采集图象输出窗口问题

    我使用DH—HV1302UM—T数字摄像头采集图象输出窗口遇到一些问题。我是直接使用其自带的SDK开发包HVViewer.exe来编程。但是我屏幕大小只有1020*688,采集的分辨率是RES_MODE01280*1024,但实际保存的图象只有屏幕大小1020*688;。我想保存所有的采集到图象的大小1280*1024,这样需要怎么改HVViewer文件。

void CMainFrame::ShowImage()
{
 CView *pView = NULL;
 CDC *pDC  = NULL;
 pView = GetActiveView();
 ASSERT(pView);
 pDC = pView->GetDC();
 ASSERT(pDC); 

//这里就是得到输出窗口的大小,我希望改成m_pBmpInfo->bmiHeader.biWidth = 1280,m_pBmpInfo->bmiHeader.biHeight = 1024;这样的效果,但是总是出错。

 m_pBmpInfo->bmiHeader.biWidth = m_rcOutputWindow.Width();

m_pBmpInfo->bmiHeader.biHeight = m_rcOutputWindow.Height();//

 DecodeImage();
 if (m_hPalette && (m_pBmpInfo->bmiHeader.biBitCount == 8)) {
  m_hOldPal = ::SelectPalette(pDC->GetSafeHdc(), m_hPalette, FALSE);   
  ::RealizePalette(pDC->GetSafeHdc());
 }

希望高手指教下,就是把输出图象窗口(在视图中显示)改成采集图象的分辨率大小,这个怎么做?

[此贴子已经被作者于2006-8-22 9:25:48编辑过]

--  作者:veilking
--  发布时间:2006-8-22 12:15:53
--  

用HVViewr保存的图像大小跟你显示的窗体大小有关,若要保存为1280*1024大小的图像需要修改所有涉及

 m_pBmpInfo->bmiHeader.biWidth/ m_pBmpInfo->bmiHeader.biHeight的地方分别为1280,1024,不要用m_rcOutputWindow.Width()/m_rcOutputWindow.Height()

还要修改void CMainFrame::DecodeImage()中的m_rcOutputWindow.Width(),    m_rcOutputWindow.Height()修改为1280,1024

其实最简单的办法是:程序中不要使用m_rcOutputWindow.Width(),    m_rcOutputWindow.Height()作为输出窗口的参数,直接用1280,1024就可以了

[此贴子已经被作者于2006-8-22 12:25:50编辑过]

--  作者:xy365
--  发布时间:2006-8-22 14:39:08
--  

谢谢楼上veilking的指点,我也是原来想直接用1280*1024但是这样改动好象有很多地方有错误。

请问你的在线联系方式是什么?希望能够进一步探讨这个问题。谢谢!!


--  作者:地瓜
--  发布时间:2006-8-22 18:43:59
--  
我觉得如果有可能的话,还是希望大家在论坛上讨论问题,因为这样大家都可以看到,也是我们创建论坛的初衷。
--  作者:veilking
--  发布时间:2006-8-22 23:03:58
--  

我每天都会登陆该论坛,一般都在,欢迎探讨,大家一起进步

[此贴子已经被作者于2006-8-22 23:05:14编辑过]

--  作者:xy365
--  发布时间:2006-8-23 8:08:31
--  

呵呵,谢谢楼上的各位如此热情!!

问题已经解决了!


--  作者:xiaobai320
--  发布时间:2006-8-30 9:26:12
--  
汗~~检讨,因为出差没能及时解决问题。这个问题就是信息头那里把宽高写成固定的就行了。呵呵。
--  作者:xy365
--  发布时间:2006-9-17 18:54:51
--  

谢谢xiaobai320!!

问题已经解决了,但是你说的信息头,我不是很理解。具体是在什么地方改?

我是在void CMainFrame::OnViewMode0() 中直接修改的

  status = HVSetOutputWindow(m_hhv,
  m_rcOutputWindow.left,
  m_rcOutputWindow.top,
  m_rcOutputWindow.Width(),
  m_rcOutputWindow.Height()   
  ); 
改为
 status = HVSetOutputWindow(m_hhv,
  m_rcOutputWindow.left,
  m_rcOutputWindow.top,
  1280,
  1024   
  ); 


--  作者:xiaobai320
--  发布时间:2006-9-18 9:27:26
--  

所谓的信息头,是包含在每副图像的内存缓存区里的,包含了图像的大致信息,一般来说要改的话,最好写在采集开始前,把图像的信息头(m_pBmpInfo)指针指向你改过后的地方,基本就可以了。保证每次

StretchDIBits显示函数每次都调用改动过的 m_pBmpInfo,就可以了。


--  作者:客人
--  发布时间:2006-11-16 13:27:36
--  

这坛子有小白热闹多了,继续努力啊,大恒的用户们有啥不清楚的快问哟。