2017-09-28 3 views
0

J'ai le code suivant compilé dans le terminal linux (C++ dans linux) et j'utilise OpenCv 3.3 Sur le serveur vient en image sous la forme de char * non signé, je le convertis en cv :: Mat comme suit:Segmentation Fault Opencv linux C++

Mat charToMat(unsigned char * bytes, int width, int height){ 
    return Mat(height, width, CV_8UC3, bytes); 
} 

Alors j'ai essayé 2 façons de convertir de cv :: Mat à IplImage *, mais dans chaque cas, la faille Segmentation se produit.

1 voie:

int * ft(Mat ft, int width, int height, int countA4) { 
     sourceImg = cvCreateImage(cvSize(ft.cols, ft.rows), 8, 3); 
     IplImage im = ft; 
     cvCopy(&im, sourceImg); // Segmentation Fault 
} 

2 façon:

int * ft (Mat ft, int width, int height, int countA4) { 
     IplImage im = ft; 
     sourceImg = cvCloneImage(&im);// Segmentation Fault 
} 

Si quelqu'un connaît la solution?

Répondre

0

Je pense que votre conversion de Mat à Iplimage est le problème.

Je voudrais essayer quelque chose comme ceci:

int * ft (Mat ft, int width, int height, int countA4) { 
    IplImage* img = new IplImage(ft); 
    sourceImg = cvCloneImage(im); 

}

pour plus d'infos essayer ce Converting cv::Mat to IplImage*

+0

merci pour l'aide, mais il est à l'origine toujours l'erreur –