画像データの複製 (3) (IPL → FIE 画像オブジェクト)
Namespace: FVIL.IplAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public virtual FHANDLE ToFIE() |
Visual Basic |
---|
Public Overridable Function ToFIE As FHANDLE |
Return Value
Type: FHANDLE新しく生成した FIE 画像オブジェクトに画像データを複製して返します。
使用後は Dispose()()()() (または fnFIE_free_object(FHANDLE)) で解放してください。
Remarks
このインスタンスの Pointer フィールドに有効なアドレスが設定されている必要があります。
処理可能な条件は、CopyTo(Object) と等価です。
処理に失敗した場合は例外が発行されます。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | 領域の確保に失敗しました。 |
11 | FVIL.ErrorCode.INVALID_PARAMETER | 引数に指定されたインスタンスが不正です。 |
12 | FVIL.ErrorCode.INVALID_OBJECT | オブジェクトハンドルが無効です。 |
16 | FVIL.ErrorCode.INVALID_IMAGETYPE | 対応する画像種別がありません。 |
17 | FVIL.ErrorCode.INVALID_IMAGESIZE | 幅、高さが許容範囲外です。 |
18 | FVIL.ErrorCode.INVALID_CHANNEL | チャネル数が許容範囲外です。 |
21 | FVIL.ErrorCode.NOT_SUPPORTED | サポートしていない条件が指定されました。 |
23 | FVIL.ErrorCode.NOT_ALLOCATED | 画像データ領域が確保されていません。 |
96 | FVIL.ErrorCode.NOMATCH_IMAGESIZE | 画像の幅または高さが一致していません。 |
97 | FVIL.ErrorCode.NOMATCH_CHANNEL | 画像のチャネル数が一致していません。 |
Examples
ソースコード:
C# | Copy |
---|---|
// $Revision: 1.3 $ using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; using System.Drawing; using System.Reflection; using fvalgcli; namespace SampleCode.Ipl { partial class Converter { public static void ToFIE() { Console.WriteLine(MethodBase.GetCurrentMethod().Name); IntPtr src = IntPtr.Zero; FHANDLE hdst = IntPtr.Zero; try { // 1) 画像準備. src = cvLoadImage ("floppy_RGB.jpg", CV_LOAD_IMAGE.CV_LOAD_IMAGE_COLOR); if (src == IntPtr.Zero) throw new FVIL.CFviException(FVIL.ErrorCode.FAILED_TO_ALLOCATE, "cvLoadImage"); // 2) ポインタを IplImageConverter に設定する. FVIL.Ipl.IplImageConverter converter = new FVIL.Ipl.IplImageConverter(src); // 3) 複製.(FIE 画像オブジェクトへ画像データを複製する) hdst = converter.ToFIE(); // -) 確認.(任意) FVIL.Data.CFviImage dst = new FVIL.Data.CFviImage(hdst, -1, new Rectangle()); dst.Save(string.Format("IplImageConverter_{0}.bmp", MethodBase.GetCurrentMethod().Name)); } finally { // 4) 解放.(IplImage を 解放する) cvReleaseImage( ref src ); api.fnFIE_free_object(hdst); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.2 $ Imports System.Collections.Generic Imports System.Text Imports System.Runtime.InteropServices Imports System.Drawing Imports System.Reflection Imports fvalgcli Namespace Ipl Partial Class Converter Public Shared Sub ToFIE() Console.WriteLine(MethodBase.GetCurrentMethod().Name) Dim src As IntPtr = IntPtr.Zero Dim hdst As FHANDLE = IntPtr.Zero Try ' 1) 画像準備. src = cvLoadImage("floppy_RGB.jpg", CV_LOAD_IMAGE.CV_LOAD_IMAGE_COLOR) If src = IntPtr.Zero Then Throw New FVIL.CFviException(FVIL.ErrorCode.FAILED_TO_ALLOCATE, "cvLoadImage") End If ' 2) ポインタを IplImageConverter に設定する. Dim converter As New FVIL.Ipl.IplImageConverter(src) ' 3) 複製.(FIE 画像オブジェクトへ画像データを複製する) hdst = converter.ToFIE() ' -) 確認.(任意) Dim dst As New FVIL.Data.CFviImage(hdst, -1, New Rectangle()) dst.Save(String.Format("IplImageConverter_{0}.bmp", MethodBase.GetCurrentMethod().Name)) Finally ' 4) 解放.(IplImage を 解放する) cvReleaseImage(src) api.fnFIE_free_object(hdst) End Try End Sub End Class End Namespace |
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |