之前MFC的是用的OpenCV画线然后显示到控件的方式,C#下使用OpenCV还没研究过,不过参考把图像转换成Bitmap格式然后画线的方式也可以实现

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 System.Diagnostics;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;using DVPCameraType;//相机SDK命名空间namespace DrawCross
{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 static bool m_draw=false;public static Form1 lpsf;//Bitmap贴图句柄public Form1(){InitializeComponent();m_ptr_wnd = pictureBox1.Handle;//贴图控件句柄lpsf = this;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);//添加到下拉列表,会返回0Select.SelectedIndex = item;//设置下拉列表项目为第一个索引}}//private ColorPalette tempPalette;/*视频流回调函数*/public static int _dvpStreamCallback(uint handle, dvpStreamEvent _event, IntPtr pContext, ref dvpFrame refFrame, IntPtr pBuffer){if(m_draw){/*绘制十字线*///转换BMP位图Bitmap bmp = null;if (refFrame.format == dvpImageFormat.FORMAT_BGR24){bmp = new Bitmap(refFrame.iWidth, refFrame.iHeight, refFrame.iWidth * 3, PixelFormat.Format24bppRgb, pBuffer);}else if (refFrame.format == dvpImageFormat.FORMAT_MONO){ColorPalette tempPalette;bmp = new Bitmap(refFrame.iWidth, refFrame.iHeight, refFrame.iWidth, PixelFormat.Format8bppIndexed, pBuffer);tempPalette = bmp.Palette;for (int i = 0; i < 255; i++){tempPalette.Entries[i] = System.Drawing.Color.FromArgb(0, i, i, i);}bmp.Palette = tempPalette;}//bmp.Save("D:\\" + count++ + ".jpeg", ImageFormat.Jpeg);//return 0;#regionBitmap rgb = new Bitmap(refFrame.iWidth, refFrame.iHeight);Graphics g = Graphics.FromImage(bmp);Pen mypen = new Pen(Color.Red, 4);Brush nBrush = new SolidBrush(Color.Blue);int a;Font font = new Font("微软雅黑", 56);g.DrawImage(bmp, 0, 0, refFrame.iWidth, refFrame.iHeight);a = refFrame.iHeight / 2;g.DrawLine(mypen, 0, a, refFrame.iWidth, a);a = refFrame.iWidth / 2;g.DrawLine(mypen, a, 0, a, refFrame.iHeight);//g.DrawString("DuShen", font, nBrush, refFrame.iWidth / 2, refFrame.iHeight / 2);lpsf.pictureBox1.Image = bmp;#endregion}else{//将图像数据绘制到贴图控件dvpStatus status = DVPCamera.dvpDrawPicture(ref refFrame, pBuffer, m_ptr_wnd, (IntPtr)0, (IntPtr)0);}return 0;}private void Refresh_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);//添加到下拉列表,会返回0Select.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);DVPCamera.dvpSetTargetFormat(m_handle, dvpStreamFormat.S_BGR24);dvpStatus status = DVPCamera.dvpStart(m_handle);//启动视频流}private void Set_Click(object sender, EventArgs e){DVPCamera.dvpShowPropertyModalDialog(m_handle, this.Handle);//参数设置窗口}private void DrawCross_CheckedChanged(object sender, EventArgs e){if(DrawCross.Checked){m_draw = true;}else{m_draw = false;}}}
}

C#_摄像头图像转换为Bitmap格式及绘制十字线相关推荐

  1. python matplotlib模块画出的图像转换为.tiff格式

    利用python matplotlib模块(python3.7.1)画出的图表暂不支持直接导出.tiff格式的图片,但是可以导出eps, pdf, pgf, png, ps, raw, rgba, s ...

  2. php格式转为jpg格式,如何在PHP中将所有图像转换为JPG格式?

    我正在用PHP开发一个网站,该网站允许用户上传图像,然后让他决定图像应如何使用jQuery- PHP整数选择要作为图片的区域,然后单击"裁剪"按钮将其裁剪并保存. 我面临的问题是并 ...

  3. 视频图像数据处理八:将rgb视频图像转换为yuv420格式视频图像

    文章目录 转换公式 需要注意 函数代码 测试用例 下载 本文介绍了将rgb视频图像转换为yuv420格式视频图像的方法,附有详细的代码和图像示例.文中rgb24和yuv420文件需要使用yuv/rgb ...

  4. opencv把图片转换成二进制_Python+OpenCV实现将图像转换为二进制格式

    Python+OpenCV实现将图像转换为二进制格式 发布时间:2020-09-20 20:30:58 来源:脚本之家 阅读:68 作者:大蛇王 在学习tensorflow的过程中,有一个问题,ten ...

  5. android本地图片转bitmap,Android中图片的网络路径转换为Bitmap格式

    在Android开发中,常常会需要将一张网络图片转换为Bitmap格式,为什么这样做呢,那是因为很多函数要求的是Bitmap类型的参数,所以直接传字符串进去是不行的,这时候就需要转换一下,源码如下: ...

  6. 在Python中使用OpenCV将RGB格式的图像转换为HSV格式的图像

    An HSV is another type of color space in which H stands for Hue, S stands for Saturation and V stand ...

  7. js 图片格式转换为jpg_如何将图像转换为JPG格式

    js 图片格式转换为jpg Many websites have strict rules that limit the size and type of image format you're al ...

  8. python 变量转二进制流_将图像转换为二进制流

    我的应用程序有两个方面,一方面,我使用C++来从PrORA的EBOSK SDK读取相机的帧.当第一次接收到该流时,在将缓冲器转换为图像之前,我能够一次读取流16位,以便对每个像素执行一些计算,即,对于 ...

  9. 将bmp图像转换为ppm格式

    实现图像格式的转化,将bmp的彩色图像转化为其他简单格式,便于使用. Cvt_BMP_to_PPM程序说明: 功能:将bmp格式的彩色图像保存为ppm格式:       将bmp格式的灰度图像保存为p ...

最新文章

  1. php文件代码采用UTF-8编码的BOM问题---转自CSDN---十方地藏---http://blog.csdn.net/webdesman...
  2. 《编码:隐匿在计算机软硬件背后的语言(美)》读书笔记四
  3. 【统计学习】统计学习方法概论
  4. 区块链学堂(7):Geth 搭建私有网络-实战
  5. 数据结构与算法(C++)– 队列(Queue)
  6. 轻松了解“Web应用防火墙”
  7. 从零开发一个命令行脚手架工具 等
  8. compress后的bytearray再decode变大_笔记本电脑风扇噪音变大的原因及其解决办法
  9. 2013年值得我们学习的网页设计作品【系列二】
  10. Riot v4.0.0-alpha.10 发布,JavaScript 的 MVP 框架
  11. python编写的购物网站_写一个购物商城的实例教程
  12. 山大824计算机基础,山大考研辅导班:山东大学2020年824计算机基础考研自命题科目考试大纲...
  13. CPC客户端编写新申请时报错异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
  14. ubuntu中安装pdf虚拟打印机
  15. 用scratch2.0编飞机大战
  16. html怎么设置后退链接,怎么创建HTML后退按钮?
  17. 什么是Android性能,如何分析性能问题?
  18. UNH-IOL获批成为首家获得OVP认证的第三方实验室
  19. 启用群晖 Drive 的团队文件夹
  20. python画饼图程序_Scribus中的Python脚本:制作饼图

热门文章

  1. C#编程中的数据库的连接字符串
  2. ubuntu 串口调试工具推荐_玩客云刷ubuntu系统(不写入emmc)
  3. Matlab 三维相图,用MATLAB绘制Pb-Sn-Sb三维立体相图
  4. 应广单片机11bitPWM配置
  5. 使用U盘安装统信UOS20服务器操作系统1050a出现“设置基础软件仓库时出错”报错导致无法继续安装的解决方法
  6. 把Windows安装到U盘,给Mac电脑用
  7. 你应该知道的那些解压命令
  8. 小学计算机教案范文,小学三年级计算机教案范文
  9. 常用的25条Excel技巧整理[转]
  10. Verizon宣布完成对AOL的44亿美元收购