Запись файлов AVI в OpenCV

Действительно, Сципи борется с комплексными числами. Тем не менее, проект под названием mpmath может решить вашу проблему. Здесь: http://mpmath.org/ . Раньше шел с sympy (sympy.org). Вы можете найти документацию здесь : Это решение работает для меня:

from mpmath import findroot
import numpy as np
import scipy.io as spio

params = dict()
params['cbeta'] = 0.96
params['cdelta'] = 0.1
params['calpha'] = 0.33
params['cgamma'] = 1.2
params['clambda']= 1.0
params['csigma'] = 0.8
params['etau'] = 0.0

def steady_s(c,y,k,g,r):
    # unpacking paramters
    cbeta = params['cbeta']
    cdelta = params['cdelta']
    calpha = params['calpha']
    cgamma = params['cgamma']
    clambda= params['clambda']
    csigma = params['csigma']

    # guesses for initial values
    #c = vars0[0]
    #y = vars0[1]
    #k = vars0[2]
    #g = vars0[3]
    #r = vars0[4]

    # == functions to minimize to find steady states == #
    f = [0,0,0,0,0]

    # HH Euler
    f[0] = (1.0/c)*cbeta*(r + 1.0 - cdelta) - (1.0+g)/c

    # Goods market clearing
    f[1] = y - c - k*(1.0 + g) + k*(1.0-cdelta)

    # Capital Market clearing
    f[2] = r - (k)**(calpha-1.0)*calpha**2.0

    # production function for final good
    f[3] = y - k**calpha

    # growth rate
    pi = (calpha - 1.0) * k**calpha #small pi, this isnt actual profits
    f[4] = g - (cgamma - 1.0) * clambda * (csigma*clambda*pi)**(csigma/(1.0-csigma))

    return f

# == Initial Guesses == #
vars0 = list(np.ones((5,)))

# == Solving for Steady State == #
xss = findroot(steady_s, vars0)

11
задан solvingPuzzles 8 September 2012 в 03:50
поделиться

6 ответов

Моя ставка - это, cvCreateVideoWriter возвращает ПУСТОЙ УКАЗАТЕЛЬ. Просто шаг через него, чтобы видеть, верно ли это. В этом случае проблема, вероятно, с CV_FOURCC (..) который не находит кодек и вызывает возврат 0;

можно попытаться использовать-1 вместо CV_FOURCC. Собирается быть подсказка во время времени выполнения для Вас к, выбрал соответствующий кодек

13
ответ дан 3 December 2019 в 06:48
поделиться

Возможно, Вы могли попытаться вставить printf ("Структурируют found\n") в для (; ;) чтобы видеть, получает ли это на самом деле кадры. Или еще лучше:

if(colourImage == NULL) {
    printf("Warning - got NULL colourImage\n");
    continue;
}
cvNamedWindow( "test", 1);
cvShowImage( "test", colourImage );
cvWaitKey( 0 );
cvDestroyWindow( "test" );

Затем посмотрите, получаете ли Вы какие-либо окна, и если они содержат правильное содержание.

0
ответ дан 3 December 2019 в 06:48
поделиться

Когда я гуглю эту проблему, я выполняю ответ: "OpenCV на Mac OS X не поддерживают запись avi, пока она не будет скомпилирована с ffmpeg"

Поскольку меня кажутся wrok этим решением http://article.gmane.org/gmane.comp.lib.opencv/16005

Необходимо предоставить полный путь файлу с фильмом в cvCreateVideoWriter. Я не знаю, является ли это только проблемой порта Mac OS X, но могло бы быть, так как QTNewDataReferenceFromFullPathCFString от спокойного бэкенда используется.

3
ответ дан 3 December 2019 в 06:48
поделиться

эй Этот код работает на DevC ++, попробуйте:

  #include<cv.h>
  #include<highgui.h>
  #include<cvaux.h>
  #include<cvcam.h>
  #include<cxcore.h>

  int main()
  {
  CvVideoWriter *writer = 0;
  int isColor = 1;
  int fps     = 5;  // or 30
  int frameW  = 1600; //640; // 744 for firewire cameras
  int frameH  = 1200; //480; // 480 for firewire cameras
  //writer=cvCreateVideoWriter("out.avi",CV_FOURCC('P','I','M','1'),
  //                           fps,cvSize(frameW,frameH),isColor);
  writer=cvCreateVideoWriter("out.avi",-1,
                       fps,cvSize(frameW,frameH),isColor);
  IplImage* img = 0; 

  img=cvLoadImage("CapturedFrame_0.jpg");
  cvWriteFrame(writer,img);      // add the frame to the file
  img=cvLoadImage("CapturedFrame_1.jpg");
  cvWriteFrame(writer,img);
  img=cvLoadImage("CapturedFrame_2.jpg");
  cvWriteFrame(writer,img);
  img=cvLoadImage("CapturedFrame_3.jpg");
  cvWriteFrame(writer,img);
  img=cvLoadImage("CapturedFrame_4.jpg");
  cvWriteFrame(writer,img);
  img=cvLoadImage("CapturedFrame_5.jpg");
  cvWriteFrame(writer,img);

  cvReleaseVideoWriter(&writer);
  return 0;
  }

Я скомпилировал его и запустил, работает нормально. (Я не видел выше, получили ли вы свой ответ или нет ... но над этой конкретной вещью я очень много работал раньше, и внезапно я просто сделал это из некоторых фрагментов кода.)

1
ответ дан 3 December 2019 в 06:48
поделиться

Этот код работал нормально:

 cv.h 
 highgui.h 
 cvaux.h 
 cvcam.h 
 cxcore.h 

int main(){

    CvVideoWriter *writer = 0;
    int isColor = 1;
    int fps     = 5;  // or 30
    IplImage* img = 0; 
    img=cvLoadImage("animTest_1.bmp");
    int frameW  = img->width; //640; // 744 for firewire cameras
    int frameH  = img->height; //480; // 480 for firewire cameras

    writer=cvCreateVideoWriter("out.avi",-1,
        fps,cvSize(frameW,frameH),1);

    cvWriteFrame(writer, img);      // add the frame to the file

    char *FirstFile,fF[20]="",*fileNoStr,fns[4]="";
    fileNoStr=fns;
    for(int fileNo;fileNo<100;fileNo++){
        FirstFile=fF;   
        itoa(fileNo,fileNoStr,10);
        FirstFile=strcat ( FirstFile,"animTest_");
        FirstFile=strcat ( FirstFile,fileNoStr);
        FirstFile=strcat ( FirstFile,".bmp");

        printf(" \n%s .",FirstFile);
        img=cvLoadImage(FirstFile);

        cvWriteFrame(writer, img);

    }
    cvReleaseVideoWriter(&writer);

    return 0;
}
0
ответ дан 3 December 2019 в 06:48
поделиться

Думаю, проблема в том, что ваш цикл for никогда не заканчивается; следовательно, cvReleaseVideoWriter (& writer); и cvReleaseCapture (& input); никогда не вызываются. Попробуйте что-нибудь вроде for (int i = 0; i <200; i ++) и посмотрите, получится ли у вас рабочее видео.

Часто видео записывается во временные файлы перед финализацией на диске. Если ваш файл не доработан, смотреть будет не на что.

Надеюсь, что это поможет.

0
ответ дан 3 December 2019 в 06:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: