大恒图像软件开测试题答案.docVIP

  • 17
  • 0
  • 约1.11万字
  • 约 6页
  • 2016-10-20 发布于浙江
  • 举报
大恒图像软件开测试题答案

系统工程师测试题目结果: 开发环境:VC++6.0 OPENCV SQLserver2005 效果图片如下: 各部分说明如下: 循环显示所提供的图像,并设置读图像的间隔时间。 添加picture控件,用于显示图片。 在工程的设置中,添加OPENCV系统头文件的路径。 在CDahengApp::InitInstance()里添加语句SetTimer(NULL,1,5000,NULL);设置时间间隔为5s。 在CDahengDlg中添加消息WM_TIMER,在函数OnTimer()中填入如下内容: int h;//h用于循环,将所用的图片放在某一个路径下,文件名为1.bmp,2.bmp。。。5.bmp CString Open_Filename; for (h=1;h6;h++) { switch (nIDEvent) { case 1: { char c[10]= ; Open_Filename=D:\\系统工程师\\所用图片\\新建文件夹 (5)\\; Open_Filename=Open_Filename+itoa(h,c,10); Open_Filename=Open_Filename+.bmp; IplImage* ipl = cvLoadImage(Open_Filename,-1); //读取图片,缓存到局部变量ipl中 if(!ipl) return; if(TheImage)//TheImage为IplImage*类型的变量 cvZero(TheImage); ResizeImage(ipl);//对读入的图片进行缩放,使其宽或高最大值者刚好等于预设的大小,再复制到?TheImage?中 ShowImage(TheImage,IDC_picture);//显示图片,IDC_picture为picture控件的名称 SetTimer(1,5000,NULL); //定时,时间为5s Invalidate(FALSE); CDialog::OnTimer(1);//调用定时函数 cvReleaseImage(ipl);//释放ipl break; } default: break; } } 其中,函数 ResizeImage(ipl)和ShowImage(TheImage,IDC_picture)定义分别如下: void CDahengDlg::ResizeImage(IplImage *img) { int w = img-width; int h = img-height; int max = (w h)?w: h; // 找出宽和高中的较大值者 float scale = (float) ( (float) max /500.0f ); float scale2 = (float) ( (float) max / 500.0f ); // 计算将图片缩放到TheImage区域所需的比例因子 int nw = (int)( w/scale ); int nh = (int)( h/scale2 ); // 缩放后图片的宽和高 int tlx = (nw nh)?0: (int)(256-nw)/2; int tly = (nw nh)?(int)(256-nh)/2: 0; // 设置ROI 区域,用来存入图片 img cvSetImageROI( TheImage, cvRect( tlx, tly, nw, nh) ); // 对图片 img 进行缩放,并存入到 TheImage 中 cvResize( img, TheImage ); cvResetImageROI( TheImage ); // 重置 TheImage 的 ROI 准备读入下一幅图片 void CDahengDlg::ShowImage(IplImage *img, UINT ID) { CDC* pDC = GetDlgItem( ID ) -GetDC(); // 获得显示控件的 DC HDC hDC = pDC -GetSafeHdc(); // 获取 HDC(设备句柄) 来进行绘图操作 CRect rect; GetDlgItem(ID) -GetClientRect( rect ); int rw = rect.right - rect.left;

文档评论(0)

1亿VIP精品文档

相关文档