Difference between revisions of "Function:Rotate"

From CUVI Wiki
(Created page with "__NOTOC__ Rotates an image about origin (0,0) or center ===Function=== {| |style="font-size:150%;"| <syntaxhighlight lang="cpp"> CuviStatus rotate(CuviImage* srcImage, ...")
 
 
(15 intermediate revisions by the same user not shown)
Line 1: Line 1:
__NOTOC__
__NOTOC__
Rotates an image about origin (0,0) or center
Rotates an image about a specified anchor point
===Function===
===Function===
{|
{|
|style="font-size:150%;"|
|style="font-size:100%;"|
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
CuviStatus rotate(CuviImage* srcImage,  
 
                   CuviImage* dstImage,
CuviStatus rotate(const CuviImage& src,
                   Cuvi32f angle,
                   CuviImage& dst,
                   CuviRotationType type = CUVI_ROTATE_CENTER,
                   const Cuvi32f angle,
                   CuviStream* stream = NULL);
                   const CuviPoint2D<int> anchor,
                  const CuviStream& stream = CuviStream());
 
CuviStatus rotate(const CuviImage& src,
                  CuviImage& dst,
                  const Cuvi32f angle,
                   const CuviPoint2D<int> anchor,
                  const CuviRect& roi,
                  const CuviStream& stream = CuviStream());
 
 
</syntaxhighlight>
</syntaxhighlight>
|}
|}


 
====Parameters====
===Parameters===
{|
 
|style="font-size:75%;"|
{|class="wikitable"
{|class="wikitable"
|-
|-
Line 22: Line 33:
! Description
! Description
|-
|-
| srcImage
| src
| CuviImage*
| const CuviImage&
| Input image
| Input image
|-
|-
| dstImage
| dst
| CuviImage*
| CuviImage&
| Output image
| Output image
|-
|-
| angle
| angle
| Cuvi32f
| const Cuvi32f
| Angle of rotation, has a range of [-360,360]
| Angle of rotation
|-
| anchor
| const CuviPoint2D<int>
| Center point of rotation
|-
|-
| type
| roi
| CuviRotationType
| const CuviRect&
| Supports:
| Region of Interest
{|
|CUVI_ROTATE_CENTER
|-
|CUVI_ROTATE_ORIGIN
|}
|-
|-
| stream
| stream
| CuviStream*
| const CuviStream&
| GPU stream ID for execution
| GPU stream ID for execution


|}
|}
|}


 
====Image Type Support====
 
{|
===Image Type Support===
|style="font-size:75%;"|
 
{| class="wikitable"
{| class="wikitable"
|-
|-
Line 63: Line 73:
| 8uC3
| 8uC3
| 8uC3
| 8uC3
|-
| 16uC1
| 16uC1
|-
| 16uC3
| 16uC3
|-
| 32fC1
| 32fC1
|-
| 32fC3
| 32fC3
|}
|}
|}


===Sample===
===Sample===
[[File:rotate_in.png|none|frame|Input Image]]
<br/>
[[File:rotate_out.png|none|frame|Resultant Image]]
<br/>
====Code Example====
{|
{|
|-
|style="font-size:100%;"|
|[[File:FlipIn.jpg|frame|Input Image]]
<syntaxhighlight lang="cpp">
|[[File:FlipOut.jpg|frame|Output Image]]
 
|}


CuviImage src, dst;


CuviStatus s = CUVI_SUCCESS;
s = src.create(ipath, CUVI_LOAD_IMAGE_COLOR);


===Example===
if (s != CUVI_SUCCESS) printf("\nImage load Error: %d", s);
{|
|style="font-size:150%;"|
<syntaxhighlight lang="cpp">


CuviImage* gimg = new CuviImage(size,img->depth,img->nChannels);
//Define point of rotation within image or ROI
CuviImage* gout = new CuviImage(size,img->depth,img->nChannels);
CuviPoint2D<int> anchor(200, 0);


//Populating GPU input image
//Define (optional) ROI
gimg->upload(img->imageData,img->widthStep);
CuviRect roi(50, 100, 200, 150);


//Perform Rotation
s = cuvi::geometryTransforms::rotate(src, dst, 1.44, anchor, roi);


//function call
cuvi::io::saveImage(dst, opath);
cuvi::geometryTransforms::rotate(gimg, gout, 15.0f, CUVI_ROTATE_ORIGIN);


</syntaxhighlight>
</syntaxhighlight>
|}
|}

Latest revision as of 08:20, 18 October 2022

Rotates an image about a specified anchor point

Function

CuviStatus rotate(const CuviImage& src,
                  CuviImage& dst,
                  const Cuvi32f angle,
                  const CuviPoint2D<int> anchor,
                  const CuviStream& stream = CuviStream());

CuviStatus rotate(const CuviImage& src,
                  CuviImage& dst,
                  const Cuvi32f angle,
                  const CuviPoint2D<int> anchor,
                  const CuviRect& roi,
                  const CuviStream& stream = CuviStream());

Parameters

Name Type Description
src const CuviImage& Input image
dst CuviImage& Output image
angle const Cuvi32f Angle of rotation
anchor const CuviPoint2D<int> Center point of rotation
roi const CuviRect& Region of Interest
stream const CuviStream& GPU stream ID for execution

Image Type Support

Input Output
8uC1 8uC1
8uC3 8uC3
16uC1 16uC1
16uC3 16uC3
32fC1 32fC1
32fC3 32fC3

Sample

Input Image


Resultant Image


Code Example

CuviImage src, dst;

CuviStatus s = CUVI_SUCCESS;
s = src.create(ipath, CUVI_LOAD_IMAGE_COLOR);

if (s != CUVI_SUCCESS)	printf("\nImage load Error: %d", s);

//Define point of rotation within image or ROI
CuviPoint2D<int> anchor(200, 0);

//Define (optional) ROI
CuviRect roi(50, 100, 200, 150);

//Perform Rotation
s = cuvi::geometryTransforms::rotate(src, dst, 1.44, anchor, roi);

cuvi::io::saveImage(dst, opath);