OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 2984|回复: 3

emcv中highgui相关问题!急!急!

[复制链接]
发表于 2013-9-18 12:02:22 | 显示全部楼层 |阅读模式
最近在做视频处理,在网上找了一个稳像的opencv程序想在ccs上先编译下,再去弄板子测试去抖效果。程序中调用了highgui.h头文件,知道highgui是做界面用的,就尝试着该程序把用到highgui的函数功能都删掉(不影响处理)。
现在面临的问题是,程序使用了cvCaptureFromAVI与cvQueryFrame这两个函数。新手一枚,诚心请教群里面的高手,我要怎么才能把这两个函数给替换掉呢?
回复

使用道具 举报

 楼主| 发表于 2013-9-18 12:07:39 | 显示全部楼层

  1. #include "iostream.h"

  2. #include "cv.h"
  3. #include "cxcore.h"
  4. #include "highgui.h"

  5. int main(int argc, char* argv[])
  6. {
  7.         IplImage * pFrame;
  8.         CvCapture * pCapture = cvCaptureFromAVI( "AAA.avi" );
  9. //        CvCapture * pCapture = cvCaptureFromCAM(0);
  10. //        CvVideoWriter * writer = cvCreateVideoWriter("AAA.avi",-1,15,cvSize(640,480));

  11.         pFrame = cvQueryFrame( pCapture );

  12.         IplImage * pGrayImg = cvCreateImage( cvGetSize(pFrame), 8, 1 );
  13.         pGrayImg->origin = pFrame->origin;
  14.         uchar * pGrayData = (uchar *)pGrayImg->imageData;
  15.         int nStep = pGrayImg->widthStep/(sizeof(uchar));

  16.         IplImage * pStableImg = cvCreateImage( cvGetSize(pFrame), 8, 3 );
  17.         pStableImg->origin = pFrame->origin;
  18.         uchar * pStableData = (uchar *)pStableImg->imageData;
  19.         int nCStep = pStableImg->widthStep/(sizeof(uchar));
  20.         cvZero(pStableImg);

  21.         IplImage * pHisHorImg = cvCreateImage( cvSize(256,240), 8, 3 );
  22.         pHisHorImg->origin = 1;
  23.         cvZero(pHisHorImg);

  24.         IplImage * pHisVerImg = cvCreateImage( cvSize(320,256), 8, 3 );
  25.         pHisVerImg->origin = 1;
  26.         cvZero(pHisVerImg);

  27.         IplImage * pCHisHorImg = cvCreateImage( cvSize(256,480), 8, 3 );
  28.         pCHisHorImg->origin = 1;
  29.         cvZero(pCHisHorImg);
  30.        
  31.         IplImage * pCHisVerImg = cvCreateImage( cvSize(640,256), 8, 3 );
  32.         pCHisVerImg->origin = 1;
  33.         cvZero(pCHisVerImg);


  34. //        cvNamedWindow("Origin");
  35. //        cvNamedWindow("Stabilization");
  36. //        cvNamedWindow("HisHor");
  37. //        cvNamedWindow("HisVer");
  38. //        cvNamedWindow("CHisHor");
  39. //        cvNamedWindow("CHisVer");

  40.         int nWidth = cvGetSize(pFrame).width;
  41.         int nHeight = cvGetSize(pFrame).height;
  42.         int i,j;
  43.         long numFrame = 0;

  44. //投影数组
  45.         int horPrj[240] = {0};
  46.         int verPrj[320] = {0};

  47.         int CurHorPrj[480] = {0};
  48.         int CurVerPrj[640] = {0};

  49.         int m , n ;

  50.         int DevX, DevY;

  51.         pFrame = cvQueryFrame( pCapture );
  52. //        cvWaitKey(1000);
  53.         pFrame = cvQueryFrame( pCapture );

  54.         cvCvtColor( pFrame, pGrayImg, CV_BGR2GRAY );
  55.         cvSmooth( pGrayImg, pGrayImg, CV_MEDIAN) ;

  56. //参考帧投影
  57. //         for ( i = 120; i < 360 ; i++)
  58. //         {
  59. //                 temp = i*nStep + 160;
  60. //                 horPrj[m] = 0;
  61. //                 for ( j =  160 ; j < 480; j++)
  62. //                 {
  63. //                         horPrj[m] += pGrayData[ temp++ ] ;                                        
  64. //                 }
  65. //                 horPrj[m] /= 320;
  66. //                 m++;
  67. //         }
  68. //
  69. //         for ( j = 160; j < 480 ; j++)
  70. //         {
  71. //                 temp = 120*nStep + j;
  72. //                 verPrj[n] = 0;
  73. //                 for ( i =  120 ; i < 360; i++)
  74. //                 {
  75. //                         verPrj[n] += pGrayData[ temp ] ;
  76. //                         temp += nStep;
  77. //                 }
  78. //                 verPrj[n] /= 240;
  79. //                 n++;
  80. //         }
  81. //
  82. //         for ( i = 0; i < 240 ; i++)
  83. //         {
  84. //                 cvLine(pHisHorImg, cvPoint(i,0), cvPoint(i,horPrj[i]), CV_RGB(255,100,100), 1, 8);
  85. //         }
  86. //         for ( i = 0; i < 320 ; i++)
  87. //         {
  88. //                 cvLine(pHisVerImg, cvPoint(i,0), cvPoint(i,verPrj[i]), CV_RGB(100,255,100), 1, 8);
  89. //         }

  90.         m = 0;
  91.         n = 0;
  92.        
  93.         for ( i = 120; i < 360 ; i++)
  94.         {
  95.                 horPrj[m] = 0;
  96.                 for ( j =  160 ; j < 480; j++)
  97.                 {
  98.                         horPrj[m] += pGrayData[ i*nStep + j ] ;                                        
  99.                 }
  100.                 horPrj[m] /= 320;
  101.                 m++;
  102.         }
  103.        
  104.         for ( j = 160; j < 480 ; j++)
  105.         {
  106.                 verPrj[n] = 0;
  107.                 for ( i =  120 ; i < 360; i++)
  108.                 {
  109.                         verPrj[n] += pGrayData[ i*nStep + j ] ;
  110.                 }
  111.                 verPrj[n] /= 240;
  112.                 n++;
  113.         }
  114.        
  115.         for ( i = 0; i < 240 ; i++)
  116.         {
  117.                 cvLine(pHisHorImg, cvPoint(0,i), cvPoint(horPrj[i],i), CV_RGB(255,100,100), 1, 8);
  118.         }
  119.         for ( i = 0; i < 320 ; i++)
  120.         {
  121.                 cvLine(pHisVerImg, cvPoint(i,0), cvPoint(i,verPrj[i]), CV_RGB(100,255,100), 1, 8);
  122.         }

  123. //         cvShowImage("HisHor",pHisHorImg);
  124. //        cvShowImage("HisVer",pHisVerImg);

  125.         while( pFrame = cvQueryFrame( pCapture ) )
  126.         {
  127. //                cvWriteFrame(writer,pFrame);
  128.                 numFrame++;
  129.                 cvCvtColor( pFrame, pGrayImg, CV_BGR2GRAY );
  130.                 cvSmooth( pGrayImg, pGrayImg, CV_MEDIAN) ;

  131.                 m = 0;
  132.                 n = 0;

  133. //当前帧投影
  134.                 for ( i = 0; i < 480 ; i++)
  135.                 {
  136.                         CurHorPrj[m] = 0;
  137.                         for ( j = 160 ; j < 480; j++)
  138.                         {
  139.                                 CurHorPrj[m] += pGrayData[ i*nStep + j ] ;

  140.                         }
  141.                         CurHorPrj[m] /= 320;
  142.                         m++;
  143.                 }
  144.                
  145.                 for ( j = 0; j < 640 ; j++)
  146.                 {
  147.                         CurVerPrj[n] = 0;
  148.                         for ( i = 120 ; i < 360; i++)
  149.                         {
  150.                                 CurVerPrj[n] += pGrayData[ i*nStep + j ] ;
  151.                         }
  152.                         CurVerPrj[n] /= 240;
  153.                         n++;
  154.                 }

  155.                 for ( i = 0; i < 480 ; i++)
  156.                 {
  157.                         cvLine(pCHisHorImg, cvPoint(0,i), cvPoint(CurHorPrj[i],i), CV_RGB(255,100,100), 1, 8);
  158.                 }
  159.                 cvLine(pCHisHorImg, cvPoint(0,120), cvPoint(255,120), CV_RGB(255,100,100), 1, 8);

  160.                 for ( i = 0; i < 640 ; i++)
  161.                 {
  162.                         cvLine(pCHisVerImg, cvPoint(i,0), cvPoint(i,CurVerPrj[i]), CV_RGB(100,255,100), 1, 8);
  163.                 }
  164.                 cvLine(pCHisVerImg, cvPoint(160,0), cvPoint(160,255), CV_RGB(100,255,100), 1, 8);


  165. //相关运算
  166.                 long MinY = 1000000000;
  167.                 long SumY = 0;
  168.                 long MinX = 1000000000;
  169.                 long SumX = 0;

  170.                 for ( i = 20; i < 220; i++)
  171.                 {
  172.                         SumY = 0;
  173.                         for ( j = 0; j < 240; j++)
  174.                         {
  175.                                 SumY += abs(horPrj[j] - CurHorPrj[j+i]);
  176.                         }
  177.                         if (SumY < MinY)
  178.                         {
  179.                                 MinY = SumY;
  180.                                 DevY = i - 120;
  181.                         }                          
  182.                 }

  183.                 for ( i = 60; i < 260; i++)
  184.                 {
  185.                         SumX = 0;
  186.                         for ( j = 0; j < 320; j++)
  187.                         {
  188.                                 SumX += abs(verPrj[j] - CurVerPrj[j+i]);
  189.                         }
  190.                         if (SumX < MinX)
  191.                         {
  192.                                 MinX = SumX;
  193.                                 DevX = i - 160;
  194.                         }                          
  195.                 }

  196.                 cout<<"Y "<<DevY<<"  X "<<DevX<<endl;

  197. //运动补偿

  198.                 for ( i = 100; i < 380 ; i++)
  199.                 {
  200.                         for ( j =  100 ; j < 540; j++)
  201.                         {
  202.                                 pStableData[i*nCStep + 3*j] = pFrame->imageData[(i+DevY)*nCStep + 3*(j+DevX)] ;
  203.                                 pStableData[i*nCStep + 3*j + 1] = pFrame->imageData[(i+DevY)*nCStep + 3*(j+DevX) + 1] ;
  204.                                 pStableData[i*nCStep + 3*j + 2] = pFrame->imageData[(i+DevY)*nCStep + 3*(j+DevX) + 2] ;
  205.                         }

  206.         }

  207.                 cvRectangle(pFrame, cvPoint(160, 120), cvPoint(nWidth-160, nHeight-120), CV_RGB(0,255,100), 1, 8);

  208.                 cvLine(pFrame, cvPoint(60,20), cvPoint(260,20), CV_RGB(255,0,0), 1, 8);

  209.                 cvSetImageROI(pFrame, cvRect(100,100,440,280));
  210.                 cvSetImageROI(pStableImg, cvRect(100,100,440,280));
  211. //                cvShowImage("Origin",pFrame);

  212. //                cvShowImage("Stabilization",pStableImg);
  213.                 cvResetImageROI(pFrame);
  214.                
  215. //                cvShowImage("CHisHor",pCHisHorImg);
  216. //                cvShowImage("CHisVer",pCHisVerImg);
  217.                 cvZero(pCHisHorImg);
  218.                 cvZero(pCHisVerImg);

  219. //                char c = cvWaitKey(50);
  220. //       if( c == 27 )
  221. //           break;
  222.     }

  223. //        cvReleaseVideoWriter(&writer);
  224. //        cvReleaseCapture( &pCapture );
  225. //   cvDestroyAllWindows();

  226.         return 0;
  227. }
复制代码
附上代码!
file:///C:/Documents and Settings/Administrator/桌面/%5BY1CJ3L_%7DF(F4MG3%7BW%5D]S%7DD.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-18 12:09:11 | 显示全部楼层
file:///C:/Documents and Settings/Administrator/桌面/%5BY1CJ3L_%7DF(F4MG3%7BW%5D%5DS%7DD.jpg
[Y1CJ3L_}F(F4MG3{W]]S}D.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-18 17:11:23 | 显示全部楼层
给自己顶一下!!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-5-29 03:12 , Processed in 0.011205 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表