recadrer et Enregistrer le ROI en tant que nouvelle image dans OpenCV 2.4.2 utilisation de cv::Mat
De travail sur la Détection des visages et la Reconnaissance, et après le succès de la détection d'un visage, je veux juste pour recadrer le visage et le sauvegarder quelque part dans le lecteur pour lui donner le code de reconnaissance. Je vais avoir dur moment à faire l'économie de la Région d'Intérêt en tant que nouvelle image. J'ai eu quelques codes en ligne, mais il est écrit dans la précédente version d'OpenCV qui utilise IplImage*
. Je suis à l'aide d'OpenCV 2.4.2 qui utilise cv::Mat
.
Heeeelp!!!
Je vais poster mes codes(détection de Visage et de Reconnaissance de soi) les gars si vous le souhaitez.
#include <cv.h>
#include <highgui.h>
#include <math.h>
//alphablend <imageA> <image B> <x> <y> <width> <height>
//<alpha> <beta>
IplImage* crop( IplImage* src, CvRect roi)
{
//Must have dimensions of output image
IplImage* cropped = cvCreateImage( cvSize(roi.width,roi.height), src->depth, src->nChannels );
//Say what the source region is
cvSetImageROI( src, roi );
//Do the copy
cvCopy( src, cropped );
cvResetImageROI( src );
cvNamedWindow( "check", 1 );
cvShowImage( "check", cropped );
cvSaveImage ("style.jpg" , cropped);
return cropped;
}
int main(int argc, char** argv)
{
IplImage *src1, *src2;
CvRect myRect;
//IplImage* cropped ;
src1=cvLoadImage(argv[1],1);
src2=cvLoadImage(argv[2],1);
{
int x = atoi(argv[3]);
int y = atoi(argv[4]);
int width = atoi(argv[5]);
int height = atoi(argv[6]);
double alpha = (double)atof(argv[7]);
double beta = (double)atof(argv[8]);
cvSetImageROI(src1, cvRect(x,y,width,height));
cvSetImageROI(src2, cvRect(100,200,width,height));
myRect = cvRect(x,y,width,height) ;
cvAddWeighted(src1, alpha, src2, beta,0.0,src1);
cvResetImageROI(src1);
crop (src1 , myRect);
cvNamedWindow( "Alpha_blend", 1 );
cvShowImage( "Alpha_blend", src1 );
cvWaitKey(0);
}
return 0;
}
Grâce. La paix
Dans le opencv dossier tutoriel, il y a un code sur la détection de visage. Considérer que l'on. Vous devrez utiliser
Avez-vous encore le code de la reconnaissance, de culture et de détection? J'ai exactement le même projet!
cv::imwrite
pour enregistrer le fichier.Avez-vous encore le code de la reconnaissance, de culture et de détection? J'ai exactement le même projet!
OriginalL'auteur Sisay | 2013-04-15
Vous devez vous connecter pour publier un commentaire.
À l'aide de
cv::Mat
objets de rendre votre code beaucoup plus simple. En supposant que le visage détecté se trouve dans un rectangle appeléfaceRect
de typecv::Rect
, tout ce que vous avez à taper pour obtenir une version rognée est:Ou alternativement:
Cela crée un temporaire
cv::Mat
objet (sans copier les données) à partir du rectangle que vous fournissez. Ensuite, le réel, les données sont copiées sur votre nouvel objet via la duplication ou la méthode de copie.OriginalL'auteur sansuiso
Pour le recadrage de la région, le ROI(Région d'intérêt) est utilisé. Le opencv2 fait le travail assez facilement. Vous pouvez consulter le lien:
http://life2coding.blogspot.com/search/label/cropping%20of%20image
OriginalL'auteur Hanif