初期値指定コンストラクタ
Namespace: FVIL.IplAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public IplImageConverter( IntPtr pvIplImage ) |
Visual Basic |
---|
Public Sub New ( pvIplImage As IntPtr ) |
Parameters
- pvIplImage
- Type: System..::..IntPtr
IplImage 構造体へのポインタ
Remarks
pvIplImage を Pointer フィールドに設定します。
この時点では pvIplImage の整合性の確認は行いません。
本クラスは、このフィールドに設定された IplImage 構造体へのポインタを介して操作を行います。
IplImage の確保と解放を行いませんので、外部で管理してください。
本ライブラリでは IplImage 構造体のパッキングサイズを 8 bytes に設定しています。
パッキングサイズが一致していない場合は、誤った値を参照するかアクセス違反を起こす場合がありますのでご注意ください。
この時点では pvIplImage の整合性の確認は行いません。
本クラスは、このフィールドに設定された IplImage 構造体へのポインタを介して操作を行います。
IplImage の確保と解放を行いませんので、外部で管理してください。
本ライブラリでは IplImage 構造体のパッキングサイズを 8 bytes に設定しています。
パッキングサイズが一致していない場合は、誤った値を参照するかアクセス違反を起こす場合がありますのでご注意ください。
Examples
出力結果:
ソースコード:
Copy | |
---|---|
ImageData : 52D16C0 == 52D16C0 Width : 320 == 320 Height : 240 == 240 Depth : 16 == 16 Channels : 3 == 3 Step : 1920 == 1920 Order : 0 == 0 Origin : 0 == 0 |
ソースコード:
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 Constructor() { Console.WriteLine(MethodBase.GetCurrentMethod().Name); // 1) 確保. IntPtr src = cvCreateImage(cvSize(320, 240), IPL_DEPTH.IPL_DEPTH_16U, 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); // -) 確認.(任意) { IplImage _src = (IplImage)Marshal.PtrToStructure(src, typeof(IplImage)); Console.WriteLine("{0,-20}: {1,8} == {2,8}", "ImageData", converter.ImageData.ToString("X"), _src.imageData.ToString("X")); Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Width", converter.Width, _src.width); Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Height", converter.Height, _src.height); Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Depth", converter.Depth, _src.depth); Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Channels", converter.Channels, _src.nChannels); Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Step", converter.Step, _src.widthStep); Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Order", converter.Order, _src.dataOrder); Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Origin", converter.Origin, _src.origin); } // 3) 解放.(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 Constructor() Console.WriteLine(MethodBase.GetCurrentMethod().Name) ' 1) 確保. Dim src As IntPtr = cvCreateImage(cvSize(320, 240), IPL_DEPTH.IPL_DEPTH_16U, 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) ' -) 確認.(任意) If True Then Dim _src As IplImage = CType(Marshal.PtrToStructure(src, GetType(IplImage)), IplImage) Console.WriteLine("{0,-20}: {1,8} == {2,8}", "ImageData", converter.ImageData.ToString("X"), _src.imageData.ToString("X")) Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Width", converter.Width, _src.width) Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Height", converter.Height, _src.height) Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Depth", converter.Depth, _src.depth) Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Channels", converter.Channels, _src.nChannels) Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Step", converter.[Step], _src.widthStep) Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Order", converter.Order, _src.dataOrder) Console.WriteLine("{0,-20}: {1,8} == {2,8}", "Origin", converter.Origin, _src.origin) End If ' 3) 解放.(IplImage を 解放する) cvReleaseImage(src) End Sub End Class End Namespace |