SrImage.

SrImage(int, int, int, int, IntPtr) Constructor

Summary

생성자입니다.
Namespace
SaigeVision.Core
Containing Type
SrImage

Syntax

public SrImage(int width, int height, int stride, int channelSize, IntPtr data)

Examples

다음 예제는 System.Drawing.Bitmap을 통해 인스턴스를 생성하여, 파일로 Save 하는 예제로 해당 생성자를 설명합니다.
 Bitmap oldImage = new Bitmap(@"c:\Hello.jpg");
 Rectangle oldImageBounds = new Rectangle(default, oldImage.Size);
 BitmapData oldBitData = oldImage.LockBits(oldImageBounds, ImageLockMode.ReadOnly, oldImage.PixelFormat;

 int channelSize = 0;
 //이외 방법으로 채널 사이즈를 지정해도 됩니다.
 if (oldImage.PixelFormat == PixelFormat.Format24bppRgb) 
     channelSize = 3;
 else if (oldImage.PixelFormat == PixelFormat.Format8bppIndexed)
     channelSize = 1;
 else throw new NotSupportedException();
 
 using (SrImage newImage = new SrImage(oldImage.Width, oldImage.Height, oldBitData.Stride, channelSize, oldBitData.Scan0))
 {
     newImage.Save(@"c:\new_hello.png", ImageFormat.Png);
 }
 oldImage.UnlockBits(oldBitData);

Remarks

width와 height는 지정된 data의 실제 Width, Height가 지정되어야 합니다.

stride는 이미지 데이터를 Matrix 구조로 생각했을때, 하나의 row 가 갖추는 수평 길이입니다. 일반적으로 이미지의 Width * ChannelSize 라고 볼 수 있지만, Width를 알 수 없을때 행의 끝을 알기 위한 Right padding이 주어질 수 있습니다. 이런 경우 Stride는 Width * ChannelSize보다 더 큽니다. 또한 stride가 양수이면 하향식 데이터이며, 음수이면 상향식 데이터입니다.

data는 ChnnelSize가 1일때 Gray scale로 갖추어진 배열 데이터의 포인터를 지정받습니다. ChannelSize 가 3이라면 BGR 순으로 정렬된 시퀀스 데이터의 포인터를 지정해야합니다.

SrImage는 gray scale과 RGB 스케일만을 지원합니다. 그러한 이유로 channelSize에 1과 3이 아닌 값을 지정하면 강제로 스케일을 RGB로 변환하여 보유합니다. (예, ARGB는 RGB로 강제 변환됩니다.)

해당 생성자의 파라메터에서 가장 주목해야 할 놈은 data입니다. 주입된 data는 사용자에 의해 관리되어야 합니다. 이말은 즉슨, SrImage 인스턴스를 사용하는 동안에 외부에서 data의 메모리를 해제해서는 안됩니다. 생성된 인스턴스의 생명과 관련이 깊음을 의미합니다.

Parameters

Name Type Description
width int 이미지 가로 길이
height int 이미지 세로 길이
stride int 직렬화된 데이터의 스트라이드
channelSize int 채널 수
data IntPtr 데이터 포인트

Return Value

Type Description
void