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;
}