win32开发环境下调试opencv程序的一些技巧

1.如果在win32开发环境下,不方便使用cvShowImage显示到窗体,可以使用cvCreateVideoWriter来记录输出的图像序列


char* outFileName = "c://track.avi";
//int outCompressCodec = CV_FOURCC('D', 'I', 'V', 'X');
//int outCompressCodec = CV_FOURCC('P', 'I', 'M', '1');
int outCompressCodec  = -1  如果你不知道什么codec,设置为-1

double outFPS = 25;
CvSize outFrameSize = cvSize(320, 240);
videoWriter = cvCreateVideoWriter(outFileName, -1, outFPS,outFrameSize); 

while(true)
{

 cvWriteFrame(videoWriter, image);

}

cvReleaseVideoWriter(&videoWriter);

 

2.不方便使用printf,cout等输出

采用写log的方法

FILE *stream;
stream = fopen( "fprintf.txt", "w" );

fprintf(stream,"glVertex3f(%f,%f,%f); /n",x,y,z);

fclose( stream );


3.自己写的绘制轮廓线,比较灵活一些
inline WW_RETURN drawContours(IplImage *dst)
{
 
 CvSeqReader reader;   
 int i;
 CvPoint pt,pt_pre; 
 
 
 for (; contour != NULL; contour = contour->h_next)
 {
  cvStartReadSeq(contour, &reader); 
  int N = contour->total;
  
  for (i = 0; i < N+1; i++)
  {    
   CV_READ_SEQ_ELEM(pt, reader);
   if(i!=0) cvLine(dst,pt,pt_pre,CV_RGB(20,0,250),2,CV_AA, 0 ); 
   pt_pre = pt;
  }  
 } 
 return WW_OK;
}

4.在图像中绘制一个十字标记
inline WW_RETURN drawCorssMark(IplImage *dst,CvPoint pt)
/*************************************************
  Function:        main_loop
  Description:     绘制一个十字标记     
  Calls:         
  Called By:     
  Input:           RGB image,  pt              
  Output:        
  Return:        
  Others:          需要检查坐标是否越界 to do list
*************************************************/
{
 
 const int cross_len = 20;
 CvPoint pt1,pt2,pt3,pt4;
 pt1.x = pt.x;
 pt1.y = pt.y - cross_len;
 pt2.x = pt.x;
 pt2.y = pt.y + cross_len;
 pt3.x = pt.x - cross_len;
 pt3.y = pt.y;
 pt4.x = pt.x + cross_len;
 pt4.y = pt.y;

 cvLine(dst,pt1,pt2,CV_RGB(230,255,0),2,CV_AA, 0 ); 
 cvLine(dst,pt3,pt4,CV_RGB(230,255,0),2,CV_AA, 0 );
 
 return WW_OK;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值