Basler相机

Basler相机

设置相机参数

public bool SetCameraParam(string ParamType, string ParamValue)
{
    try
    {
        switch (ParamType)
        {
            case "ExposureTimeAbs":
                {
                    if (!camera.Parameters[PLCamera.ExposureTimeAbs].TrySetValue(double.Parse(ParamValue)))
                    {
                        return false;
                    }
                }
                break;
            case "TriggerSource":
                {
                    if (!camera.Parameters[PLCamera.TriggerSource].TrySetValue(ParamValue))
                    {
                        return false;
                    }
                }
                break;
            default:
                break;
        }
        return true;
    }
    catch (Exception e)
    {
        // MessageBox.Show(e.ToString());
        MachineMaster.tsk.UpdateLog(e.ToString());

        return false;
    }
}

关闭相机

public void DestroyCamera()
{
    if (camera != null)
    {
        camera.Close();
        camera.Dispose();
        camera = null;
    }
}

连接Basler相机Demo(C#版)

camera.StreamGrabber.GrabStarted += StreamGrabber_GrabStarted;
camera.StreamGrabber.ImageGrabbed += StreamGrabber_ImageGrabbed;
camera.StreamGrabber.GrabStopped += StreamGrabber_GrabStopped;

Basler SDK pylon6使用C#采集图像实例

连接相机

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Basler.Pylon;
using System.Windows.Forms;
using System.Drawing;
using System.IO;
using System.Diagnostics;
using System.Threading;
using HalconDotNet;

namespace Lead
{
    public class Basler_SDK_Mono
    {
        public Camera camera;
        public Bitmap bitmap;
        public Bitmap CopyBitmap;
        private int CameraIndex;

        public bool GrabFlag = false;

        // Basler.Pylon.PixelDataConverter _conveter;
        AutoResetEvent _resetEvent = new AutoResetEvent(true);
        public Basler_SDK_Mono(string CameraSN, int Camera_Index)
        {
            try
            {
                camera = new Camera(CameraSN);
                this.CameraIndex = Camera_Index;
            }
            catch
            {

            }
        }

        //打开相机
        public bool OpenCamera()
        {
            try
            {
                if (!camera.IsOpen)
                {
                    camera.Open();
                    camera.StreamGrabber.ImageGrabbed += OnImageGrabbed;
                    camera.Parameters[PLCamera.TriggerSelector].TrySetValue("FrameStart");
                    camera.Parameters[PLCamera.TriggerMode].TrySetValue("On");
                    camera.Parameters[PLCamera.TriggerSource].TrySetValue("Software");
                    camera.Parameters[PLCamera.TriggerActivation].TrySetValue("Falling Edge");
                    //camera.Parameters[PLCamera.FrameTimeoutAbs].TrySetValue(20000);
                    camera.StreamGrabber.Start(GrabStrategy.LatestImages, GrabLoop.ProvidedByStreamGrabber);
                    BitmapFactory.CreateBitmap(out bitmap, (int)camera.Parameters[PLCamera.Width].GetValue(), (int)camera.Parameters[PLCamera.Height].GetValue(), false);
                    //switch (CameraIndex)
                    //{
                    //    case 1:
                    //        {
                    //            SetCameraParam("ExposureTimeAbs", "600");
                    //        }
                    //        break;
                    //    case 2:
                    //        {
                    //            SetCameraParam("ExposureTimeAbs", "600");
                    //        }
                    //        break;
                    //    case 3:
                    //        {
                    //            SetCameraParam("ExposureTimeAbs", "600");
                    //        }
                    //        break;
                    //    default:
                    //        break;
                    //}
                }
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        //开始采集
        public bool StartStream()
        {
            try
            {
                if (camera.IsOpen)
                {
                    camera.StreamGrabber.Start(GrabStrategy.LatestImages, GrabLoop.ProvidedByStreamGrabber);
                }
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        public bool StopStream()
        {
            try
            {
                if (camera.StreamGrabber.IsGrabbing)
                {
                    camera.StreamGrabber.Stop(); 
                }
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }
        //抓取图像
        //object LockObj = new object();
        private void OnImageGrabbed(Object sender, ImageGrabbedEventArgs e)
        {
            try
            {
                IGrabResult grabResult = e.GrabResult;
                long ImageNo = grabResult.ImageNumber;
                if (grabResult.GrabSucceeded)
                {
                    Debug.WriteLine(grabResult.ImageNumber);
                    byte[] buffer = grabResult.PixelData as byte[];
                    BitmapFactory.UpdateBitmap(bitmap, buffer, grabResult.Width, grabResult.Height, false);
                    CopyBitmap = (Bitmap)bitmap.Clone();
                    打开图像处理线程
                    //Task RunToolBlock_1 = new Task(() => MachineMaster.Camera1_Run());
                    //Task RunToolBlock_2 = new Task(() => MachineMaster.Camera2_Run());
                    //Task RunToolBlock_3 = new Task(() => MachineMaster.Camera3_Run());
                    switch (CameraIndex)
                    {
                        case 1:
                            //离线存图
                            MachineMaster.halcon.ho_ShowImage1 = MachineMaster.halcon.HImageConvertFromBitmap8(CopyBitmap);
                            {
                                switch (MachineMaster.strBGside+MachineMaster.strLightNo)
                                {
                                    case "S1":
                                        if (MachineMaster.AutoRunEnable_Camera1 && MachineMaster.AutoRunFlag_Camera1)
                                        {
                                            ImageInfo ImageInfo = new ImageInfo() { Image = MachineMaster.halcon.HImageConvertFromBitmap8(CopyBitmap), Index = ImageNo };
                                            if (MachineMaster.LstImage_1.Find(x => x.Index == ImageNo) == null)
                                            {
                                                MachineMaster.LstImage_1.Add(ImageInfo);
                                            }
                                            new Action(() =>
                                            {
                                                MachineMaster.VImageProcess_1_1(MachineMaster.halcon.HImageConvertFromBitmap8(CopyBitmap), ImageNo);
                                            }).BeginInvoke(null, null);
                                        }
                                        break;
                                    case "S2":
                                        if (MachineMaster.AutoRunEnable_Camera1 && MachineMaster.AutoRunFlag_Camera1)
                                        {
                                            ImageInfo ImageInfo = new ImageInfo() { Image = MachineMaster.halcon.HImageConvertFromBitmap8(CopyBitmap), Index = ImageNo };
                                            if (MachineMaster.LstImage_1.Find(x => x.Index == ImageNo) == null)
                                            {
                                                MachineMaster.LstImage_1.Add(ImageInfo);
                                            }
                                            new Action(() =>
                                            {
                                                MachineMaster.VImageProcess_1_2(MachineMaster.halcon.HImageConvertFromBitmap8(CopyBitmap), ImageNo);
                                            }).BeginInvoke(null, null);
                                        }
                                        break;
                                    case "S1;2":
                                        if (MachineMaster.AutoRunEnable_Camera1 && MachineMaster.AutoRunFlag_Camera1)
                                        {
                                            ImageInfo ImageInfo = new ImageInfo() { Image = MachineMaster.halcon.HImageConvertFromBitmap8(CopyBitmap), Index = ImageNo };
                                            if (MachineMaster.LstImage_1.Find(x => x.Index == ImageNo) == null)
                                            {
                                                MachineMaster.LstImage_1.Add(ImageInfo);
                                            }
                                            new Action(() =>
                                            {
                                                //MachineMaster.VImageProcess_1_12(MachineMaster.halcon.HImageConvertFromBitmap8(CopyBitmap), ImageNo);
                                            }).BeginInvoke(null, null);
                                        }
                                        break;
                                    default:
                                        break;
                                }                           
                            }
                            break;
                        case 2:
                            {
                                MachineMaster.halcon.ho_ShowImage2 = MachineMaster.halcon.HImageConvertFromBitmap8(CopyBitmap);
                                switch (MachineMaster.strLightNo)
                                {
                                    case "1":
                                        if (MachineMaster.AutoRunEnable_Camera2 && MachineMaster.AutoRunFlag_Camera2)
                                        {
                                            ImageInfo ImageInfo = new ImageInfo() { Image = MachineMaster.halcon.HImageConvertFromBitmap8(CopyBitmap), Index = ImageNo };
                                            if (MachineMaster.LstImage_1.Find(x => x.Index == ImageNo) == null)
                                            {
                                                MachineMaster.LstImage_1.Add(ImageInfo);
                                            }
                                            new Action(() =>
                                            {
                                               // MachineMaster.ImageProcess_2_1(MachineMaster.halcon.HImageConvertFromBitmap8(CopyBitmap), ImageNo);
                                            }).BeginInvoke(null, null);
                                        }
                                        break;
                                    case "2":
                                        if (MachineMaster.AutoRunEnable_Camera2 && MachineMaster.AutoRunFlag_Camera2)
                                        {
                                            ImageInfo ImageInfo = new ImageInfo() { Image = MachineMaster.halcon.HImageConvertFromBitmap8(CopyBitmap), Index = ImageNo };
                                            if (MachineMaster.LstImage_1.Find(x => x.Index == ImageNo) == null)
                                            {
                                                MachineMaster.LstImage_1.Add(ImageInfo);
                                            }
                                            new Action(() =>
                                            {
                                                //MachineMaster.ImageProcess_2_2(MachineMaster.halcon.HImageConvertFromBitmap8(CopyBitmap), ImageNo);
                                            }).BeginInvoke(null, null);
                                        }
                                        break;
                                    default:
                                        break;
                                    }
                                }
                            break;
                    }

                    GrabFlag = true;
                    _resetEvent.Set();
                }
                else
                {
                    //MessageBox.Show("grabResult.NoGrabSucceeded");
                    _resetEvent.Set();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        public bool StartGrab()
        {
            try
            {
                if (camera == null)
                {
                    return false;
                }

                if (!camera.IsOpen)
                {
                    return false;
                }

                int index = 1;
                while (true)
                {
                    if (index == 10)
                    {
                        throw new Exception("Fail to WaitForFrameTriggerReady!");
                    }
                    if (false == camera.WaitForFrameTriggerReady(100, TimeoutHandling.Return))
                    {
                        index++;
                        Thread.Sleep(50);
                        continue;
                    }
                    _resetEvent.Reset();
                    camera.ExecuteSoftwareTrigger();
                    _resetEvent.WaitOne();
                    break;
                }


                //if (camera.WaitForFrameTriggerReady(100, TimeoutHandling.ThrowException))
                //{
                //    _resetEvent.Reset();
                //    camera.ExecuteSoftwareTrigger();
                //    _resetEvent.WaitOne();
                //}
                if (!GrabFlag)
                {
                    Thread.Sleep(300);
                    index = 1;
                    while (true)
                    {
                        if (index == 10)
                        {
                            throw new Exception("Fail to WaitForFrameTriggerReady!");
                        }
                        if (!camera.WaitForFrameTriggerReady(1000, TimeoutHandling.Return))
                        {
                            index++;
                            Thread.Sleep(50);
                            continue;
                        }
                        _resetEvent.Reset();
                        camera.ExecuteSoftwareTrigger();
                        _resetEvent.WaitOne();
                        break;
                    }
                }
                return true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }
        }


        public bool SetCameraParam(string ParamType, string ParamValue)
        {
            try
            {
                switch (ParamType)
                {
                    case "ExposureTimeAbs":
                        {
                            if (!camera.Parameters[PLCamera.ExposureTimeAbs].TrySetValue(double.Parse(ParamValue)))
                            {
                                return false;
                            }
                        }
                        break;
                    case "TriggerSource":
                        {
                            if (!camera.Parameters[PLCamera.TriggerSource].TrySetValue(ParamValue))
                            {
                                return false;
                            }
                        }
                        break;
                    default:
                        break;
                }
                return true;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
                return false;
            }
        }

        //关闭相机
        public void CloseCamera()
        {
            try
            {
                if (camera == null)
                    return;

                //if (camera.StreamGrabber.IsGrabbing)
                //{
                //    camera.StreamGrabber.Stop();
                //}


                if (camera.IsOpen)
                {
                    camera.Close();
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }

    }
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Basler相机是一种高质量的工业相机,常用于图像采集。它以瑞士Basler公司命名,具有高分辨率、高帧率和高灵敏度的特点。它能够在极短的时间内采集大量的图像数据。 Basler相机的采集过程类似于摄影,通过镜头对目标物体进行成像,并将所获得的图像数据转换为数字信号。相机的传感器负责将光线转化为电信号,并进行采集和处理。 Basler相机的采集质量与其传感器的像素数有着直接关系。像素数越高,图像的细节和清晰度就越好。由于Basler相机采用了先进的CMOS技术,因此在采集过程中产生的噪声较少,图像质量更加清晰。 为了取得准确和稳定的图像,Basler相机还可以进行自动曝光和自动对焦。自动曝光功能能够根据光线的强弱自动调整曝光时间,确保图像亮度适合观察和处理。自动对焦功能则能够根据目标物体的距离自动调整镜头的焦距,确保图像的清晰度和准确度。 在采集过程中,Basler相机还可以提供多种接口选项,如GigE、USB和Camera Link等,以满足不同应用的需求。相机还可以通过相关软件进行图像处理和分析,以提取目标物体的特征信息。 总的来说,Basler相机采集了高质量的图像数据,具有高分辨率、高帧率和高灵敏度的特点,并通过自动曝光和自动对焦等功能,保证了图像的清晰度和准确度。它可以应用于各种领域,如工业检测、医学影像和科学研究等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值