Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2017, 21:04   #1
ValeryV
 
Регистрация: 06.05.2016
Сообщений: 4
По умолчанию Раскадровка видео через массив

Написал простенькую программу - захват видео через 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


CvCapture* capture;

cvNamedWindow("original",CV_WINDOW_ AUTOSIZE);

capture = cvCreateFileCapture( "C:\\Users\\валера\\Downloads\\danc e.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; 23.02.2017 в 21:59.
ValeryV вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена потока видео через Javascript Maxjuvefan JavaScript, Ajax 0 15.12.2016 15:24
Глюки TWebBrowser и видео через YouTube stealth7 Компоненты Delphi 7 18.11.2016 12:57
Раскадровка и закадровка видео формата AVI ruN00b Мультимедиа в Delphi 17 24.05.2013 07:42
Получать видео через сокет. Aleksandr Работа с сетью в Delphi 3 30.04.2013 16:08
надо сделать дек через массив и через список. CHUCKe Помощь студентам 4 20.11.2010 17:23