サイズ情報の取得 (IPL 用)
Namespace: FVIL.IplAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public virtual IplImageSize ToIplImageSize() |
Visual Basic |
---|
Public Overridable Function ToIplImageSize As IplImageSize |
Return Value
Type: IplImageSizeIplImage を確保する際に使用するサイズ情報を返します。
Remarks
Pointer フィールドを IplImage 構造体にキャストして各フィールドの値をそのまま設定します。
Pointer に IntPtr.Zero が設定されている場合は例外を発行します。
処理に失敗した場合は例外が発行されます。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
23 | FVIL.ErrorCode.NOT_ALLOCATED | 画像データ領域が確保されていません。 |
Examples
出力結果:
ソースコード:
Copy | |
---|---|
width : 93 height : 47 depth : IPL_DEPTH_16S channels : 3 |
ソースコード:
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 ToIplImageSize() { 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.Ipl.IplImageSize size = converter.ToIplImageSize(); // -) 確認.(任意) Console.WriteLine("{0,-20}: {1}", "width", size.width); Console.WriteLine("{0,-20}: {1}", "height", size.height); Console.WriteLine("{0,-20}: {1}", "depth", (IPL_DEPTH)size.depth); Console.WriteLine("{0,-20}: {1}", "channels", size.channels); // 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 ToIplImageSize() 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 size As FVIL.Ipl.IplImageSize = converter.ToIplImageSize() ' -) 確認.(任意) Console.WriteLine("{0,-20}: {1}", "width", size.width) Console.WriteLine("{0,-20}: {1}", "height", size.height) Console.WriteLine("{0,-20}: {1}", "depth", CType(size.depth, IPL_DEPTH)) Console.WriteLine("{0,-20}: {1}", "channels", size.channels) ' 4) 解放.(IplImage を 解放する) cvReleaseImage(src) End Sub End Class End Namespace |
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |