海康相机二次开发之缩小相机拍摄范围
在机器视觉的图像处理过程中,图像大而目标小则可能增加图像的处理时间。如果可以缩小相机的拍摄范围,只抓取包含目标的某一范围的图像,则可缩短图像的处理时间。在海康相机的二次开发过程中,我们可通过设置相机的参数来控制或者说缩小相机的拍摄范围。
第一步,设置所需的拍摄范围
打开相机后,要在相机当前的拍摄范围内绘制一动态矩形,设置自己所需的矩形拍摄区域,同时获取矩形的初始坐标点以及宽高。
示例代码:
relativeRoi roi;
private Point startPoint, endPoint;
private bool blnDraw;
private void pbShowImg_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
startPoint = e.Location;
blnDraw = true;
}
}
private void pbShowImg_MouseMove(object sender, MouseEventArgs e)
{
if (blnDraw)
{
if (e.Button != MouseButtons.Left) return;//判断是否按下左键
endPoint = e.Location;
pbShowImg.Invalidate();
}
}
private void pbShowImg_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
endPoint = e.Location;
blnDraw = false;
}
}
private void pbShowImg_Paint(object sender, PaintEventArgs e)
{
if (startPoint.Equals(endPoint)) return;
Pen pen = new Pen(Color.Red, 2);
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
if (blnDraw)
{
//绘制矩形
e.Graphics.DrawRectangle(pen, Math.Min(startPoint.X, endPoint.X), Math.Min(startPoint.Y, endPoint.Y), Math.Abs(startPoint.X - endPoint.X), Math.Abs(startPoint.Y - endPoint.Y));