copier une partie de l'image avec openCv c ++
Je suis en utilisant opencv et je veux créer une image à partir d'une partie d'une image.
Je n'ai pas trouvé une fonction qui fais que j'ai donc essayer de mettre en œuvre mon Idée qui se composent de la copie de l'image pixel par pixel mais en vain je n'ai pas obtenu le résultat que je suis en attente pour les.
Quelqu'un a une autre Idée
Code:
#include "cv.h"
#include "highgui.h"
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
int main(int argc,char** argv) {
IplImage * img =0;
uchar *data;
int i,j,k;
int height,width,widthStep,nChannels;
img=cvLoadImage(argv[1],3);
height =img->height;
width = img->width;
widthStep= img->widthStep;
nChannels = img->nChannels;
data=(uchar*)img->imageData;
IplImage* img1=cvCreateImage(cvSize(height/2,width/2),IPL_DEPTH_8U,nChannels);
for(i=0;i<height/2;i++){
for(j=0;j<width/2;j++){
for(k=0;k<3;k++){
img1->imageData[i*widthStep+j*nChannels]=data[i*widthStep+j*nChannels];
}
}
}
cvShowImage("image_Originale2",img1);
cvWaitKey(0);
cvReleaseImage(&img);
return 0;
}
source d'informationauteur Wadii Slatnia
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez accomplir peut être fait par la définition d'une ROI (Région d'Intérêt) sur l'image et la copie de la partie défini par le ROI sur une nouvelle image.
Vous pouvez voir un démonstration à l'aide de
IplImage
sur ce post.Ces postes spectacle utilise de ROI pour résoudre les différents scénarios:
Il est important de noter que votre code à l'aide de la interface C de OpenCV. L'interface C++ offre
cv::Mat
qui est l'équivalent deIplImage
. En d'autres termes, ce que vous cherchez est un C solution au problème.Vous devez utiliser
cv::Mat
'constructeur de copie. C'est beaucoup mieux queIplImage
:À l'aide de constructeur de copie :
Chercher le cvSetImageROI() fonction.