初期値指定コンストラクタ

Namespace: FVIL.Ipl
Assembly: 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 に設定しています。
パッキングサイズが一致していない場合は、誤った値を参照するかアクセス違反を起こす場合がありますのでご注意ください。

Examples

出力結果:
Copy imageCopy
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 imageCopy
// $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 imageCopy
' $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

See Also