Я пытаюсь сделать водяной знак изображения в видеопоследовательность. Процесс требует декомпозиции кадров в SVD, который я пытаюсь достичь, используя неполный код ниже. Конструктор SVD в строке 47 не работает с ошибкой сегментации. GDB сообщает следующее сообщение об ошибке:Применение SVD для изображения YCbCr в OpenCV
"Программа получила сигнал SIGSEGV, сегментация вина 0xb5d31ada в dlange_() из /usr/lib/liblapack.so.3gf."
#include <iostream>
#include <stdio.h>
#include "cv.h"
#include "highgui.h"
const unsigned int MAX = 10000;
using namespace cv;
using namespace std;
int NO_FRAMES;
bool check_exit()
{
return (waitKey(27) > 0)?true:false;
}
int main(int argc, char ** argv)
{
Mat rgb[MAX];
Mat ycbcr[MAX];
Mat wm_rgb[MAX];
namedWindow("watermark",1);
namedWindow("RGB", 1);
namedWindow("YCBCR",1);
VideoCapture capture(argv[1]);
Mat watermark = imread(argv[2]);
int i=0;
capture >> rgb[i];
imshow("watermark", watermark);
while(!rgb[i].empty())
{
imshow("RGB", rgb[i]);
cvtColor(rgb[i], ycbcr[i], CV_RGB2YCrCb);
imshow("YCBCR", ycbcr[i]);
i++;
capture >> rgb[i];
cout<<"frame "<<i<<endl;
if(check_exit())
exit(0);
}
//This line creates Segmentation fault
SVD temp(rgb[0]);
capture.release();
return 0;
}