Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Разработка Windows Forms > Раскадровка видео через массив |
Автор: ValeryV 23.2.2017, 20:13 |
Написал простенькую программу - захват видео через OpenCV и его воспроизведение на pictureBox1. Пытаюсь сделать раскадровку - создаю массив и каждый кадр в цикле завожу в него. Пробую извлечь конкретный кадр из массива в pictureBox2 - изображение не получаю.Какая-то информация в элементе массива есть - pictureBox2 меняет цвет - но конкретной картинки конкретного кадра нет.Если вместо заведения кадра в массив использую SAVE в файл - кадр записывается и отображается,а через массив не хочет.Может кто подскажет в чем проблема или ошибка.Привожу код: c++ #pragma endregion array<Image^>^img; Bitmap^myBitmap; bool Pause; int i; private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { img=gcnew array<Image^>(625);// определяю как i+1[/color] CvCapture* capture; cvNamedWindow("original",CV_WINDOW_AUTOSIZE); capture = cvCreateFileCapture( " C:\\Users\\валера\\Downloads\\dance.mpg"); while(true){ if(Pause!=true) { // получаем следующий кадр frame = cvQueryFrame( capture ); if( !frame ) { break; } myBitmap = gcnew System:rawing::Bitmap(frame-> width,frame->height,frame->widthStep, System:rawing::Imaging::PixelFormat::Format24bppRgb, (System::IntPtr)frame->imageData); pictureBox1->Image = myBitmap; img[i]= pictureBox1->Image; label2->Text = i.ToString(); // показываю количество кадров //if(i==3) //{ // pictureBox1->Image->Save( "C:\\MyPics\\image11.bmp" ); //} i++; } char c = cvWaitKey(40); if (c == 27) { // если нажата ESC - выходим break; } } cvReleaseCapture( &capture ); cvDestroyWindow("original"); } private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { Pause=!Pause; } private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) { pictureBox2->Image=img[3];// выбираю произвольный индекс из массива,который хочу отобразить //pictureBox2-> Image=Image::FromFile("C:\\MyPics\\image11.bmp"); } |
Автор: ValeryV 24.2.2017, 19:41 |
Все,вопрос закрыт,разобрался. Ведь в массиве хранится не сам image,а лишь ссылка на него. Но создаваясь в цикле image нигде не сохраняется ! Т.е. я пытаюсь ссылаться на НЕСУЩЕСТВУЮШИЙ объект. |