为了提取到一幅图像中感兴趣的区域并裁剪出来作为一幅新图像的方法:
1、利用void cvSetImageROI( IplImage* image, CvRect rect )函数设置感兴趣的区域;
IplImage* src = cvLoadImage(“D:\\test.jpg”,1);
cvSetImageROI(src,cvRect(0,0,0.5*src->width,0.5*src->height));
2、创建一个与感兴趣区域同样大小的新图像;
IplImage* dst = cvCreateImage(cvSize(0.5*src->width,0.5*src->height),src->depth,src->nchannels);
3、利用void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL )函数将设置了感兴趣区域的图像复制到新图像;
cvCopy(src,dst,0);
4、释放感兴趣区域。
cvResetImageROI(src);
最近要做图像特征提取,可能要用下HOG特征,所以研究了下OpenCV的HOG描述子。OpenCV中的HOG特征提取功能使用了HOGDescriptor这个类来进行封装,其中也有现成的行人检测的接口。然而,无论是OpenCV官方说明文档还是各个中英文网站目前都没有这个类的使用说明,所以在这里把研究的部分心得分享一下。
首先我们进入HOGDescriptor所在的头文件,看看它的构造函数需要哪些参数。
- CV_WRAP HOGDescriptor() : winSize(64,128), blockSize(16,16), blockStride(8,8),
- cellSize(8,8), nbins(9), derivAperture(1), winSigma(-1),
- histogramNormType(HOGDescriptor::L2Hys), L2HysThreshold(0.2), gammaCorrection(true),
- nlevels(HOGDescriptor::DEFAULT_NLEVELS)
- {}