Witam. Piszę w C++ za pomocą visual studio 2008. Korzystam z biblioteki OpenCV.

Za pomocą obiekt timer 2 pobieram ramkę z kamery USB, dodaję do niej pobrany czas i datę i wyświetlam w komponencie PictureBox (poniższy kod). Wszystko działa jak należy :)

private: System::Void timer2_Tick(System::Object^  sender, System::EventArgs^  e) 
		 {
			
			//pobranie daty i czasu systemowego
			
    		GetSystemTime(&st);
			System::String^ data;
			data = ("Data:"+st.wDay+":"+st.wMonth+":"+st.wYear+" Czas:"+(st.wHour+1)+":"+st.wMinute+":"+st.wSecond+"");
			
			
			//konwersja string data do char napis
			//
			pin_ptr<const wchar_t> wch = PtrToStringChars(data);
			size_t convertedChars = 0;
			size_t  sizeInBytes = ((data->Length + 1) * 2);
			errno_t err = 0;
			char* napis = (char *)malloc(sizeInBytes);
			err = wcstombs_s(&convertedChars,napis, sizeInBytes,wch, sizeInBytes);
			//
			//definicja czcionki
			CvFont font;
			double hScale=0.5;
			double vScale=0.5;
			int    lineWidth=1;
			cvInitFont(&font,CV_FONT_HERSHEY_SIMPLEX, hScale,vScale,0,lineWidth);
			
			frame = cvQueryFrame(capture);
			//naniesienie tekstu na ramkę
			cvPutText (frame,napis,cvPoint(370,380), &font, cvScalar(255,255,0));
			
			//podgląd obrazu z kamery
			this->pictureBox1->Image  = gcnew    
			System::Drawing::Bitmap(frame->width,frame->height,frame->widthStep,
			System::Drawing::Imaging::PixelFormat::Format24bppRgb,
			(System::IntPtr) frame->imageData);
			
		 }

Za pomocą obiekt timer 3 pobieram ramkę, wyświetlam w pictureBox i zapisuję do pliku AVI za pomocą writera
inicjalizowanego wcześniej kodem:

CvVideoWriter* writer; 
writer = cvCreateVideoWriter("tmp.avi", CV_FOURCC('D','I','V','X'), 20, cvSize( frameW, frameH ), 1); 

:)

poniżej kod timera 3

private: System::Void timer3_Tick(System::Object^  sender, System::EventArgs^  e) 
		 {
			
			
			frame = cvQueryFrame(capture);
		
			//podgląd obrazu z kamery
			this->pictureBox1->Image  = gcnew    
			System::Drawing::Bitmap(frame->width,frame->height,frame->widthStep,
			System::Drawing::Imaging::PixelFormat::Format24bppRgb,
			(System::IntPtr) frame->imageData);

			//rejestracja sekwencji wideo
			cvWriteFrame(writer,frame);
		 }

Chcę jednak aby do pliku zapisywany był obraz z datą i czasem. ( połączenie timera 2 i 3) Wystarczy teoretycznie dołączyć linię zapisu do pliku (

cvWriteFrame(writer,frame);

) do timera 2 i już. Wyświetlany jest wówczas błąd i komunikat **"próba dostępu do pamięci chronionej". **Nie mam pojęcia jak to obejść :( Proszę o pomoc :)