C#_工业摄像头图像数据显示到窗口控件

 

需要摄像头厂商SDK

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using DVPCameraType;//命名空间

namespace WinFormCamera
{
    public partial class Form1 : Form
    {
        public static IntPtr m_ptr_wnd = new IntPtr();
        public static IntPtr m_ptr = new IntPtr();
        private DVPCamera.dvpStreamCallback _proc;
        uint m_handle = 0;//相机句柄

        public Form1()//窗体进程
        {
            InitializeComponent();
            m_ptr_wnd = pictureBox1.Handle;//贴图控件句柄
        }

        /*视频流回调函数*/
        public static int _dvpStreamCallback(uint handle, dvpStreamEvent _event, IntPtr pContext, ref dvpFrame refFrame, IntPtr pBuffer)
        {
            //将图像数据绘制到贴图控件
            dvpStatus status = DVPCamera.dvpDrawPicture(ref refFrame, pBuffer, m_ptr_wnd, (IntPtr)0, (IntPtr)0);
            return 0;
        }

        /*枚举设备*/
        private void Find_Click(object sender, EventArgs e)
        {
            Select.Items.Clear();//每次点击枚举按钮后先清空列表
            int item;//下拉列表项目索引
            uint count = 0;//设备数量
            dvpCameraInfo dev_info = new dvpCameraInfo();//相机信息结构体
            DVPCamera.dvpRefresh(ref count);//刷新相机数量
            for (uint i = 0; i < count; i++)
            {
                DVPCamera.dvpEnum(i, ref dev_info);//枚举
                item=Select.Items.Add(dev_info.FriendlyName);//添加到下拉列表,会返回0
                Select.SelectedIndex = item;//设置下拉列表项目为第一个索引
            }
        }

        /*打开设备*/
        private void Open_Click(object sender, EventArgs e)
        {
            DVPCamera.dvpOpenByName(Select.Text, dvpOpenMode.OPEN_NORMAL, ref m_handle);//打开

            //注册视频流回调函数
            _proc = _dvpStreamCallback;
            DVPCamera.dvpRegisterStreamCallback(m_handle, _proc, dvpStreamEvent.STREAM_EVENT_PROCESSED, m_ptr);
        }

        /*启动视频流*/
        private void Show_Click(object sender, EventArgs e)
        {
            dvpStatus status = DVPCamera.dvpStart(m_handle);//启动视频流

            //dvpStatus status = DVPCamera.dvpShowPropertyModalDialog(m_handle, this.Handle);//参数设置窗口
        }
    }
}


这个漏了,不指定平台调用API会报错

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值