test |
|
IVAN4
一般會員 發表:2 回覆:0 積分:0 註冊:2004-02-29 發送簡訊給我 |
if(!SaveDialog1->Execute()) { return ; } AnsiString current_time,current_date; IplImage *frame = NULL; IplImage *current_frame = NULL; CvVideoWriter *Video_Record = NULL; CvCapture *capture = NULL; capture = cvCaptureFromCAM(0); IplImage *tmp = cvQueryFrame(capture); int Width = (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH); int Height = (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT); //Video_Record = cvCreateVideoWriter(SaveDialog1->FileName.c_str() ,CV_FOURCC('M','J','P','G'),20.0,cvSize(640,480)); Video_Record = cvCreateVideoWriter(SaveDialog1->FileName.c_str() ,-1,10.0,cvSize(Width,Height)); /* //*********************************** capDlgVideoFormat(Video_Record); ghCapWnd=Video_Record ; capDlgVideoFormat(ghCapWnd); //*********************************** */ if(capture) { for(;;) { if(!cvGrabFrame(capture)) break; frame = cvRetrieveFrame(capture); if(!frame) break; if(!current_frame) current_frame = cvCreateImage(cvSize(frame->width ,frame->height ), IPL_DEPTH_8U,frame->nChannels); if(frame->origin == IPL_ORIGIN_TL) cvCopy(frame, current_frame, 0); else cvFlip(frame, current_frame, 0); //current_time = DateToStr(Now()) TimeToStr(Now()); Word hour,Minute,second,msec; DecodeTime(Now(),hour,Minute,second,msec); current_time = DateToStr(Now()) " " IntToStr(hour) ":" IntToStr(Minute) ":" IntToStr(second); //TimeToStr(Now()); CvPoint point ; point.x = 10; point.y = 450; CvFont font; cvInitFont(&font,CV_FONT_VECTOR0,0.5,0.5,0.0,1.0); cvPutText(current_frame,current_time.c_str(),point, &font , CV_RGB(255,255,255)); IplImageToTBitmap(current_frame,Image1->Picture->Bitmap); Image1->Repaint(); cvWriteFrame(Video_Record,current_frame); if(cvWaitKey(10)>=0) break; if(Stop) break; Application->ProcessMessages(); } cvReleaseImage(¤t_frame); cvReleaseCapture(&capture); cvReleaseVideoWriter(&Video_Record); Image1->Picture->Bitmap = NULL; Image1->Repaint(); }else{ ShowMessage("找不到 Camera"); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Stop1Click(TObject *Sender) { Stop = true; } //--------------------------------------------------------------------------- bool IplImageToTBitmap (const IplImage *src,Graphics::TBitmap *dest) { if (!src || !dest) return false; IplImage *temp; CvRect roi; if (src->roi) roi=cvGetImageROI(src); else roi=cvRect(0,0,src->width,src->height); temp=cvCreateImage(cvSize(roi.width,roi.height),IPL_DEPTH_8U,3); if (src->nChannels!=3) cvCvtColor(src,temp,CV_GRAY2RGB); else cvCopy(src,temp); if (dest->Width==0 || dest->Height==0) { dest->Width = roi.width; dest->Height = roi.height; } else { IplImage *temp1=cvCloneImage(temp); cvReleaseImageData(temp); cvInitImageHeader(temp,cvSize(dest->Width,dest->Height),IPL_DEPTH_8U,3,src->origin,4); cvCreateImageData(temp); roi.width=dest->Width; roi.height=dest->Height; cvResize(temp1,temp); cvReleaseImage(&temp1); } dest->PixelFormat=pf24bit; try { unsigned char *pLine; int x,y; for(y=0 ;y pLine = (unsigned char *)dest->ScanLine[y]; for(x=0 ;x pLine[x]= ((unsigned char*)(temp->imageData temp->widthStep*y))[x]; } } } catch(...) { ShowMessage("Error while converting ..."); } cvReleaseImage(&temp); return true; } uiouio |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |