サイズ情報の取得 (WIL 用)
Namespace: FVIL.IplAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public virtual ImageSize ToImageSize() |
Visual Basic |
---|
Public Overridable Function ToImageSize As ImageSize |
Return Value
Type: ImageSizeCFviImage を確保する際に使用するサイズ情報を返します。
Remarks
現在設定されている IplImage と互換性がある画像オブジェクトのサイズ情報に変換します。
Pointer フィールドを IplImage 構造体にキャストして各フィールドの値を変換します。
Pointer に IntPtr.Zero が設定されている場合は例外を発行します。
Width,
Height,
Channels
が許容範囲内の場合は ImageSize にそのまま格納されます。
Depth は下表のように変換されます。
Depth | 画像種別 (ImageType) |
---|---|
IPL_DEPTH_8U | UC8 |
IPL_DEPTH_16S | US16 |
IPL_DEPTH_16U | S16 |
IPL_DEPTH_32S | I32 |
IPL_DEPTH_32F | FLOAT |
IPL_DEPTH_64F | DOUBLE |
処理に失敗した場合は例外が発行されます。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
23 | FVIL.ErrorCode.NOT_ALLOCATED | 画像データ領域が確保されていません。 |
16 | FVIL.ErrorCode.INVALID_IMAGETYPE | 対応する画像種別がありません。 |
17 | FVIL.ErrorCode.INVALID_IMAGESIZE | 幅、高さが許容範囲外です。 |
18 | FVIL.ErrorCode.INVALID_CHANNEL | チャネル数が許容範囲外です。 |
Examples
出力結果:
ソースコード:
Copy | |
---|---|
HorzSize : 93 VertSize : 47 ImageType : S16 Channel : 3 Depth : 16 ImageInfo : GRAY |
ソースコード:
C# | Copy |
---|---|
// $Revision: 1.3 $ using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Drawing; using System.Reflection; namespace SampleCode.Ipl { partial class Converter { public static void ToImageSize() { Console.WriteLine(MethodBase.GetCurrentMethod().Name); // 1) 画像準備. IntPtr src = cvCreateImage(cvSize(93, 47), IPL_DEPTH.IPL_DEPTH_16S, 3); if (src == IntPtr.Zero) throw new FVIL.CFviException(FVIL.ErrorCode.FAILED_TO_ALLOCATE, "cvCreateImage"); // 2) IplImage 構造体へのポインタを IplImageConverter に設定する. FVIL.Ipl.IplImageConverter converter = new FVIL.Ipl.IplImageConverter(src); // 3) 画像サイズ情報の取得. FVIL.ImageSize image_size = converter.ToImageSize(); // -) 確認.(任意) Console.WriteLine("{0,-20}: {1}", "HorzSize", image_size.HorzSize); Console.WriteLine("{0,-20}: {1}", "VertSize", image_size.VertSize); Console.WriteLine("{0,-20}: {1}", "ImageType", image_size.ImageType); Console.WriteLine("{0,-20}: {1}", "Channel", image_size.Channel); Console.WriteLine("{0,-20}: {1}", "Depth", image_size.Depth); Console.WriteLine("{0,-20}: {1}", "ImageInfo", image_size.ImageInfo); // 4) 解放.(IplImage を 解放する) cvReleaseImage( ref src ); } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.2 $ Imports System.Collections.Generic Imports System.Text Imports System.Runtime.InteropServices Imports System.Drawing Imports System.Reflection Namespace Ipl Partial Class Converter Public Shared Sub ToImageSize() Console.WriteLine(MethodBase.GetCurrentMethod().Name) ' 1) 画像準備. Dim src As IntPtr = cvCreateImage(cvSize(93, 47), IPL_DEPTH.IPL_DEPTH_16S, 3) If src = IntPtr.Zero Then Throw New FVIL.CFviException(FVIL.ErrorCode.FAILED_TO_ALLOCATE, "cvCreateImage") End If ' 2) IplImage 構造体へのポインタを IplImageConverter に設定する. Dim converter As New FVIL.Ipl.IplImageConverter(src) ' 3) 画像サイズ情報の取得. Dim image_size As FVIL.ImageSize = converter.ToImageSize() ' -) 確認.(任意) Console.WriteLine("{0,-20}: {1}", "HorzSize", image_size.HorzSize) Console.WriteLine("{0,-20}: {1}", "VertSize", image_size.VertSize) Console.WriteLine("{0,-20}: {1}", "ImageType", image_size.ImageType) Console.WriteLine("{0,-20}: {1}", "Channel", image_size.Channel) Console.WriteLine("{0,-20}: {1}", "Depth", image_size.Depth) Console.WriteLine("{0,-20}: {1}", "ImageInfo", image_size.ImageInfo) ' 4) 解放.(IplImage を 解放する) cvReleaseImage(src) End Sub End Class End Namespace |
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |