Specifications
Intel
®
Image Processing Library Reference Manual
11-12
11
Example 11-2 Rotating an Image (continued)
double xshift=0, yshift=0;
imga = iplCreateImageHeader(
1, 0, IPL_DEPTH_8U, "GRAY", "GRAY",
IPL_DATA_ORDER_PIXEL, IPL_ORIGIN_TL,
IPL_ALIGN_DWORD, width, height, NULL, NULL,
NULL, NULL);
if( NULL == imga ) return 0;
imgb = iplCreateImageHeader(
1, 0, IPL_DEPTH_8U, "GRAY", "GRAY",
IPL_DATA_ORDER_PIXEL, IPL_ORIGIN_TL,
IPL_ALIGN_DWORD, width, height, NULL, NULL,
NULL, NULL);
if( NULL == imgb ) return 0;
// Create with filling
iplAllocateImage( imga, 1, 0 );
if( NULL == imga->imageData ) return 0;
// Make horizontal line
for( i=0; i<width; i++)
(imga->imageData + 2*imga->widthStep)[i] =
(uchar)7;
iplAllocateImage( imgb, 0, 0 );
if( NULL == imgb->imageData ) return 0;
// Rotate by 45 degrees around point(2,2)
iplGetRotateShift(2.0,2.0,45.0, &xshift, &yshift);
iplRotate( imga, imgb, 45.0, xshift, yshift,
IPL_INTER_LINEAR );
// Check if an error occurred
if( iplGetErrStatus() != IPL_StsOk ) return 0;
}
__finally {
iplDeallocate(imga, IPL_IMAGE_HEADER|IPL_IMAGE_DATA);
iplDeallocate(imgb, IPL_IMAGE_HEADER|IPL_IMAGE_DATA);
}
return IPL_StsOk == iplGetErrStatus();
}