画像データの複製 (3) (IPL → GDI 画像オブジェクト)
Namespace: FVIL.IplAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public virtual CFviGdiImage ToCFviGdiImage( int bpp ) |
Visual Basic |
---|
Public Overridable Function ToCFviGdiImage ( bpp As Integer ) As CFviGdiImage |
Parameters
- bpp
- Type: System..::..Int32
ピクセルサイズ(bits) [8,24,32]
複製先の再確保を行う際のピクセルサイズを示します。
Return Value
Type: CFviGdiImage新しく生成した GDI 画像オブジェクトに画像データを複製して返します。
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
出力結果:
ソースコード:
Copy | |
---|---|
[0] bpp=8 [1] bpp=24 [2] bpp=32 |
ソースコード:
C# | Copy |
---|---|
// $Revision: 1.2 $ 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 ToCFviGdiImage1() { Console.WriteLine(MethodBase.GetCurrentMethod().Name); // 1) 画像準備. IntPtr 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) 複製.(CFviGdiImage へ画像データを複製する) int[] bpps = { 8, 24, 32, }; for(int i=0 ; i<bpps.Length ; i++) { // -) 複製. using (FVIL.GDI.CFviGdiImage dst = converter.ToCFviGdiImage(bpps[i])) { // -) 確認.(任意) Console.WriteLine("[{0}] bpp={1}", i, dst.Bpp); } } // 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 ToCFviGdiImage1() Console.WriteLine(MethodBase.GetCurrentMethod().Name) ' 1) 画像準備. Dim src As IntPtr = 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) 複製.(CFviGdiImage へ画像データを複製する) Dim bpps As Integer() = {8, 24, 32} For i As Integer = 0 To bpps.Length - 1 ' -) 複製. Using dst As FVIL.GDI.CFviGdiImage = converter.ToCFviGdiImage(bpps(i)) ' -) 確認.(任意) Console.WriteLine("[{0}] bpp={1}", i, dst.Bpp) End Using Next ' 4) 解放.(IplImage を 解放する) cvReleaseImage(src) End Sub End Class End Namespace |
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |