Beispiel #1
0
 public static extern int flycaptureGetCameraInfo(int flycapContext, ref FlyCaptureInfoEx arInfo);
Beispiel #2
0
        static void Main(string[] args)
        {
            int flycapContext;
            int ret;
            FlyCaptureInfoEx flycapInfo     = new FlyCaptureInfoEx();
            FlyCaptureImage  image          = new FlyCaptureImage();
            FlyCaptureImage  flycapRGBImage = new FlyCaptureImage();

            // Create the context.
            ret = flycaptureCreateContext(&flycapContext);
            if (ret != 0) // test
            {
                reportError(ret, "flycaptureCreateContext");
                return;
            }

            // Initialize the camera.
            ret = flycaptureInitialize(flycapContext, _CAMERA_INDEX);
            if (ret != 0)
            {
                reportError(ret, "flycaptureInitialize");
                return;
            }

            // Get the info for this camera.
            ret = flycaptureGetCameraInfo(flycapContext, ref flycapInfo);
            if (ret != 0)
            {
                reportError(ret, "flycaptureGetCameraInformation");
                return;
            }
            if (flycapInfo.CameraType == FlyCaptureCameraType.FLYCAPTURE_BLACK_AND_WHITE)
            {
                Console.Write("Model: B&W " + flycapInfo.pszModelString + "\n"
                              + "Serial #: " + flycapInfo.SerialNumber + "\n");
            }
            else if (flycapInfo.CameraType == FlyCaptureCameraType.FLYCAPTURE_COLOR)
            {
                Console.Write("Model: Colour " + flycapInfo.pszModelString + "\n"
                              + "Serial #: " + flycapInfo.SerialNumber + "\n");
            }

            // Start FlyCapture.
            ret = flycaptureStart(flycapContext,
                                  FlyCaptureVideoMode.FLYCAPTURE_VIDEOMODE_ANY,
                                  FlyCaptureFrameRate.FLYCAPTURE_FRAMERATE_ANY);
            if (ret != 0)
            {
                reportError(ret, "flycaptureStart");
                return;
            }

            // Grab one image to examine the image size
            ret = flycaptureGrabImage2(flycapContext, ref image);
            if (ret != 0)
            {
                reportError(ret, "flycaptureGrabImage2");
                return;
            }

            // Allocate buffer for color processed image
            byte[] BGR_buffer = new byte[image.iRows * image.iCols * 3];

            // Start grabbing images.
            Console.Write("\nGrabbing Images ");
            for (int iImage = 0; iImage < _IMAGES_TO_GRAB; iImage++)
            {
                // grab an image
                ret = flycaptureGrabImage2(flycapContext, ref image);
                if (ret != 0)
                {
                    reportError(ret, "flycaptureGrabImage2");
                    return;
                }

                // Convert the image.
                fixed(byte *pBGR_buffer = BGR_buffer)
                {
                    flycapRGBImage.pData       = pBGR_buffer;
                    flycapRGBImage.pixelFormat = FlyCapturePixelFormat.FLYCAPTURE_BGR;
                    ret = flycaptureConvertImage(flycapContext, ref image, ref flycapRGBImage);
                    if (ret != 0)
                    {
                        reportError(ret, "flycaptureConvertImage");
                        return;
                    }
                }

                Console.Write(".");
            }


            // Save the image.
            Console.Write("\nSaving Last Image ");
            ret = flycaptureSaveImage(flycapContext, ref flycapRGBImage, "color.bmp",
                                      FlyCaptureImageFileFormat.FLYCAPTURE_FILEFORMAT_BMP);
            if (ret != 0)
            {
                reportError(ret, "flycaptureSaveImage");
                return;
            }
            else
            {
                System.Diagnostics.Process.Start("mspaint.exe", "color.bmp");
            }

            // Stop FlyCapture.
            ret = flycaptureStop(flycapContext);
            if (ret != 0)
            {
                reportError(ret, "flycaptureStop");
                return;
            }

            // Destroy the context.
            ret = flycaptureDestroyContext(flycapContext);
            if (ret != 0)
            {
                reportError(ret, "flycaptureDestroyContext");
                return;
            }

            Console.Write("\nPress Enter");
            Console.Read();
        }