Перейти к содержимому
Compvision.ru

ibn_maksimys

Пользователи
  • Количество публикаций

    12
  • Зарегистрирован

  • Посещение

  • Days Won

    2

Сообщения, опубликованные пользователем ibn_maksimys


  1. Добрый день!

    Появилась задача разделения потокового вещания, получаемого с ТВ(euronews, Россия24 и т.д.), на информационные сюжеты. Беглый поиск в Интернете не позволил найти идей решения подобной задачи.

    Первое что приходит мне на ум, это использование шаблона вещания: отыгрыши между сюжетами, логотип канала, наличие бегущей строки. Но данный подход требует настройки под каждый канала и в случае внесения изменений в оформления канала будут неприятные сюрпризы. Кто-нибудь встречал идеи решения подобной задача в нашей/зарубежной периодике, есть ли у вас какие-нибудь продуктивные идеи на этот счет?


  2. Вопрос решен. После длительного "ковыряния" с OpenCV пришел к выводу, что для получения композитного сигнала с TV Tuner'a нужно опускаться до уровня DirectShow. Это новый уровень дзен для меня :) В этом направлении сейчас и разбираюсь.


  3. Сейчас набросал тестовую программку, чтобы посмотреть содержимое CvCapture *capture.

    #include "stdafx.h"
    
    #include "conio.h"
    
    #include "opencv/highgui.h"
    
    #include "iostream"
    
    
    using namespace std;
    
    
    int _tmain(int argc, _TCHAR* argv[])
    
    {	CvCapture* capture = 0;
    
    	capture = cvCreateCameraCapture(0);
    
    	if(!capture){
    
    		return -1;
    
    	}
    
    	IplImage *bgr_frame=cvQueryFrame(capture);
    
    	cout << bgr_frame->depth;
    
    	cout << bgr_frame->width;
    
    	getch();
    
    	return 0;
    
    }

    Web-камеры не подключены. Из устройств видео-захвата только tv-tuner.

    Поставил BreakPoint. Содержимое capture посмотреть нельзя. Поэтому смотрю, что содержится а IplImage *bgr_frame:

    nSize = 112

    nChannels = 3

    depth = 8

    colorModel = "RGB"

    channelSeq = "BGR"

    align = 4

    heigh = 4 (Вот тут я не пойму, почему высота 4, а не 480 например, как при подключении web-камеры)

    width = 0

    widthStep = 0

    Таким образом, получается, что программа подхватывает видео-поток, но в нем содержится не то, что мне нужно. Не оцифрованное видео с композитного входа. Как бы изменить настройки тюнера, чтобы он выдавал то, что я от него жду.


  4. Совсем недавно начал изучать openCV. При попытке получить кадр с камеры в окне постоянно показывается такая строка : "Error: SampleCB() - buffer sizes do not match", хотя при этом кадры нормально отображаются. Можно ли избавиться от этой ошибки? И ещё такой вопрос, хотелось бы узнать о затратах в ресурсах при использовании функций из openCV.

    Нашли причину этой ошибки?


  5. Добрый день!

    Написал программу, которая захватывает кадры с web-камеры и выводит их на pictureBox.

    До этого работал с Matlab и там, видео с композитного входа тв-тюнера отражалось также как и видео с камеры. Но в OpenCV так не срабатывает. Например вот эта программа:

    #include "stdafx.h"
    
    #include "opencv/highgui.h"
    
    
    CvCapture* capture;
    
    
    int _tmain(int argc, _TCHAR* argv[])
    
    {
    
    	cvNamedWindow( "Example", CV_WINDOW_AUTOSIZE );
    
    
    
    		capture = cvCaptureFromCAM(0);
    
    
    	if( capture != NULL ){
    
    
    		IplImage* frame;
    
    		while(1) {
    
    			frame = cvQueryFrame( capture );
    
    			if( !frame ) break;
    
    			cvShowImage( "Example", frame );
    
    			char c = cvWaitKey(33);
    
    			if( c == 27 ) break;
    
    		}
    
    		cvReleaseCapture( &capture );
    
    		cvDestroyWindow( "Example" );
    
    	};
    
    	return 0;
    
    }
    
    

    создает окно Example, т.е. по сути имеет доступ у видео-потоку, но не выводит этот пресловутый поток в окно Example.

    Кто-нибудь сталкивался с получением видео-данных с web-камеры?


  6. А что мешает Mat сохранить? функцией imwrite к примеру

    Есть уже написанный код, который работает со структурой IplImage, это раз, а во-вторых - в целях повышения образованности.

    Нашел как преобразовать.

    cv::Mat frame;
    
    IplImage img ((IplImage)frame);				
    
    cvSaveImage(fileNameSave,&img);

    • Like 2

  7. Добрый день!

    При написании программы появилась необходимость сохранять кадр, полученный с камеры, на диск. При работе с камерой кадры сохраняются в переменной типа cv::Mat, сохранить же на диск хочу через cvSaveImage(). Но для этого необходимо преобразовать cv::Mat в IplImage *.

    Пробовал многие способы из описанных в Интернете - преобразовать не получается. Например вот так.

    cv::Mat frame;
    
    IplImage *img = cvCreateImage(cvSize(frame.cols, frame.rows),3,1);
    
    img->imageData = (char*)frame.data;

    Кто сталкивался с подобной задаче, подскажите пожалуйста!

×