C#_摄像头图像转换为Bitmap格式及绘制十字线
之前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格式及绘制十字线相关推荐
- python matplotlib模块画出的图像转换为.tiff格式
利用python matplotlib模块(python3.7.1)画出的图表暂不支持直接导出.tiff格式的图片,但是可以导出eps, pdf, pgf, png, ps, raw, rgba, s ...
- php格式转为jpg格式,如何在PHP中将所有图像转换为JPG格式?
我正在用PHP开发一个网站,该网站允许用户上传图像,然后让他决定图像应如何使用jQuery- PHP整数选择要作为图片的区域,然后单击"裁剪"按钮将其裁剪并保存. 我面临的问题是并 ...
- 视频图像数据处理八:将rgb视频图像转换为yuv420格式视频图像
文章目录 转换公式 需要注意 函数代码 测试用例 下载 本文介绍了将rgb视频图像转换为yuv420格式视频图像的方法,附有详细的代码和图像示例.文中rgb24和yuv420文件需要使用yuv/rgb ...
- opencv把图片转换成二进制_Python+OpenCV实现将图像转换为二进制格式
Python+OpenCV实现将图像转换为二进制格式 发布时间:2020-09-20 20:30:58 来源:脚本之家 阅读:68 作者:大蛇王 在学习tensorflow的过程中,有一个问题,ten ...
- android本地图片转bitmap,Android中图片的网络路径转换为Bitmap格式
在Android开发中,常常会需要将一张网络图片转换为Bitmap格式,为什么这样做呢,那是因为很多函数要求的是Bitmap类型的参数,所以直接传字符串进去是不行的,这时候就需要转换一下,源码如下: ...
- 在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 ...
- js 图片格式转换为jpg_如何将图像转换为JPG格式
js 图片格式转换为jpg Many websites have strict rules that limit the size and type of image format you're al ...
- python 变量转二进制流_将图像转换为二进制流
我的应用程序有两个方面,一方面,我使用C++来从PrORA的EBOSK SDK读取相机的帧.当第一次接收到该流时,在将缓冲器转换为图像之前,我能够一次读取流16位,以便对每个像素执行一些计算,即,对于 ...
- 将bmp图像转换为ppm格式
实现图像格式的转化,将bmp的彩色图像转化为其他简单格式,便于使用. Cvt_BMP_to_PPM程序说明: 功能:将bmp格式的彩色图像保存为ppm格式: 将bmp格式的灰度图像保存为p ...
最新文章
- php文件代码采用UTF-8编码的BOM问题---转自CSDN---十方地藏---http://blog.csdn.net/webdesman...
- 《编码:隐匿在计算机软硬件背后的语言(美)》读书笔记四
- 【统计学习】统计学习方法概论
- 区块链学堂(7):Geth 搭建私有网络-实战
- 数据结构与算法(C++)– 队列(Queue)
- 轻松了解“Web应用防火墙”
- 从零开发一个命令行脚手架工具 等
- compress后的bytearray再decode变大_笔记本电脑风扇噪音变大的原因及其解决办法
- 2013年值得我们学习的网页设计作品【系列二】
- Riot v4.0.0-alpha.10 发布,JavaScript 的 MVP 框架
- python编写的购物网站_写一个购物商城的实例教程
- 山大824计算机基础,山大考研辅导班:山东大学2020年824计算机基础考研自命题科目考试大纲...
- CPC客户端编写新申请时报错异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
- ubuntu中安装pdf虚拟打印机
- 用scratch2.0编飞机大战
- html怎么设置后退链接,怎么创建HTML后退按钮?
- 什么是Android性能,如何分析性能问题?
- UNH-IOL获批成为首家获得OVP认证的第三方实验室
- 启用群晖 Drive 的团队文件夹
- python画饼图程序_Scribus中的Python脚本:制作饼图
热门文章
- C#编程中的数据库的连接字符串
- ubuntu 串口调试工具推荐_玩客云刷ubuntu系统(不写入emmc)
- Matlab 三维相图,用MATLAB绘制Pb-Sn-Sb三维立体相图
- 应广单片机11bitPWM配置
- 使用U盘安装统信UOS20服务器操作系统1050a出现“设置基础软件仓库时出错”报错导致无法继续安装的解决方法
- 把Windows安装到U盘,给Mac电脑用
- 你应该知道的那些解压命令
- 小学计算机教案范文,小学三年级计算机教案范文
- 常用的25条Excel技巧整理[转]
- Verizon宣布完成对AOL的44亿美元收购