作物和保存的投资回报率在OpenCV的2.4.2新形象使用CV ::垫(crop and Save

2019-08-31 05:58发布

工作人脸检测与识别,并在成功检测到的脸,我只是要裁剪的脸和地方保存在驱动器中给它一个识别码。 我有很难做到利益的保存区域作为一个新的形象。 我已经得到了一些代码网上,但它是写在以前版本的OpenCV使用IplImage* 。 我使用的OpenCV 2.4.2使用cv::Mat
Heeeelp!
我会后我的代码(人脸检测与识别本身),如果你们想要它。

#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;
}

谢谢。 和平

Answer 1:

使用cv::Mat的对象会让你的代码简单得多。 假设侦测到的脸部位于一个名为矩形faceRect型的cv::Rect ,你必须键入获得裁剪后的版本是:

cv::Mat originalImage;
cv::Rect faceRect;
cv::Mat croppedFaceImage;

croppedFaceImage = originalImage(faceRect).clone();

或者:

originalImage(faceRect).copyTo(croppedImage);

这将创建一个临时cv::Mat对象(不复制数据),从您提供的矩形。 那么,真正的数据是通过克隆或复制方法复制到新的对象。



Answer 2:

对于裁剪区域的ROI(感兴趣区域)使用。 该opencv2做这项工作很容易。 您可以检查链接: http://life2coding.blogspot.com/search/label/cropping%20of%20image



文章来源: crop and Save ROI as new image in OpenCV 2.4.2 using cv::Mat