1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
void stamp(
IplImage * src,
IplImage * dst,
CvRect r,
double angle=-50.0,
double scale = 1
){
CvPoint2D32f center = cvPoint2D32f(src->width/2,src->height/2);
CvMat* rot_mat = cvCreateMat(2,3,CV_32FC1);
IplImage * intermediate = cvCloneImage(src);
cv2DRotationMatrix(center,angle,scale,rot_mat);
cvWarpAffine(src,intermediate,rot_mat,CV_WARP_FILL_OUTLIERS,cvScalarAll(255));
IplImage * mask = cvCloneImage(intermediate);
cvNot(mask,mask);
cvSetImageROI(dst, r);
cvCopy(intermediate,dst,mask);
cvResetImageROI(dst);
cvReleaseImage(&mask);
cvReleaseMat(&rot_mat);
cvReleaseImage(&intermediate);
|