http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4649|回复: 9

[咨询站长] 相机采集程序

[复制链接]
发表于 2014-11-11 17:12:19 | 显示全部楼层 |阅读模式
1金钱
飞哥,能给讲讲相机的采集程序编写的一些逻辑流程么,譬如:初始化相机,配置相机IP,打开相机,图像转换,关闭相机等等,第一次写相机的采集程序,不知道从哪下手,能讲讲具体流程么,能具体点最好。



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-11-11 17:14:55 | 显示全部楼层
我没有搞过
回复

使用道具 举报

发表于 2014-11-11 19:51:37 | 显示全部楼层
我只是路过打酱油的。
回复

使用道具 举报

发表于 2014-11-12 14:59:41 | 显示全部楼层
等我晚上回去给你找一个例子,一种方法是调用摄像头驱动,一种是直接的控件。。。
回复

使用道具 举报

 楼主| 发表于 2014-11-12 15:03:42 | 显示全部楼层
love'点点 发表于 2014-11-12 14:59
等我晚上回去给你找一个例子,一种方法是调用摄像头驱动,一种是直接的控件。。。

ok,能不能找到工业相机开发的基本思路,从哪着手写之类的,先谢谢了!
回复

使用道具 举报

 楼主| 发表于 2014-11-12 15:03:54 | 显示全部楼层
love'点点 发表于 2014-11-12 14:59
等我晚上回去给你找一个例子,一种方法是调用摄像头驱动,一种是直接的控件。。。

ok,能不能找到工业相机开发的基本思路,从哪着手写之类的,先谢谢了!
回复

使用道具 举报

发表于 2014-11-12 15:10:52 | 显示全部楼层
mkstronger 发表于 2014-11-12 15:03
ok,能不能找到工业相机开发的基本思路,从哪着手写之类的,先谢谢了!

工业相机的这个没有,我当时只是弄得简单的摄像头开发,只是为了采集数据用的。一个是本地的,一个是网路摄像头。
回复

使用道具 举报

 楼主| 发表于 2014-11-12 15:11:51 | 显示全部楼层
love'点点 发表于 2014-11-12 15:10
工业相机的这个没有,我当时只是弄得简单的摄像头开发,只是为了采集数据用的。一个是本地的,一个是网路 ...

没事,只要是相机的就行,研究研究总没坏处。
回复

使用道具 举报

发表于 2014-11-12 22:26:56 | 显示全部楼层
我以前弄过的是两种东西,一个是直接调用本地摄像头驱动,另一个是AForge类库操作。




这个是本地的摄像头调用~~~~前提是有摄像头,并且驱动安装正确!

[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

using System.Runtime.InteropServices;
using System.Drawing.Imaging;

namespace CameraDemo
{
  public partial class Camera : UserControl
  {
  private int hHwnd;
  public string fileName = "*";//照片的文件名
  public int width = 240;//照片的尺寸为宽度:240,高度:320,即:240*320
  public int height = 320;
  public bool isOpen = false;
  /// <summary>   
  /// 必需的设计器变量。   
  /// </summary>   
  [DllImport("avicap32.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
  public static extern int capCreateCaptureWindowA([MarshalAs(UnmanagedType.VBByRefStr)] ref string lpszWindowName, int dwStyle, int x, int y, int nWidth, short nHeight, int hWndParent, int nID);
  [DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
  public static extern bool DestroyWindow(int hndw);
  [DllImport("user32", EntryPoint = "SendMessageA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
  public static extern int SendMessage(int hwnd, int wMsg, int wParam, [MarshalAs(UnmanagedType.AsAny)] object lParam);
  [DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
  public static extern int SetWindowPos(int hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);

  public Camera()
  {
  InitializeComponent();
  //Clipboard.Clear();   
  }
  private void OpenCapture()
  {
  int intWidth = this.videoWindow.Width;
  int intHeight = this.videoWindow.Height;
  int intDevice = 0;
  string refDevice = intDevice.ToString();
  hHwnd = Camera.capCreateCaptureWindowA(ref refDevice, 1342177280, 0, 0, 640, 480, this.videoWindow.Handle.ToInt32(), 0);

  if (Camera.SendMessage(hHwnd, 0x40a, intDevice, 0) > 0)
  {
  Camera.SendMessage(this.hHwnd, 0x435, -1, 0);
  Camera.SendMessage(this.hHwnd, 0x434, 0x42, 0);
  Camera.SendMessage(this.hHwnd, 0x432, -1, 0);
  Camera.SetWindowPos(this.hHwnd, 1, 0, 0, intWidth, intHeight, 6);
  isOpen = true;
  }
  else
  {
  Camera.DestroyWindow(this.hHwnd);
  }
  }

  private void btn_OpenCapture_Click(object sender, EventArgs e)//打开摄像头,显示视频
  {
  this.OpenCapture();
  }

  private void btn_GetCapture_Click(object sender, EventArgs e)//抓取图像
  {
  try
  {
  Camera.SendMessage(this.hHwnd, 0x41e, 0, 0);
  IDataObject obj_camera = Clipboard.GetDataObject();
  if (obj_camera.GetDataPresent(typeof(Bitmap)))
  {
  Image image_camera = ((Image)obj_camera.GetData(typeof(Bitmap))).GetThumbnailImage(width, height, null, IntPtr.Zero);
  //设置图片的尺寸为240*320

  SaveFileDialog SaveFileDialog_camera = new SaveFileDialog();
  SaveFileDialog_camera.FileName = fileName + ".jpg";
  SaveFileDialog_camera.Filter = "Image Files(*.JPG)|*.JPG";
  if (SaveFileDialog_camera.ShowDialog() == DialogResult.OK)
  {
  image_camera.Save(SaveFileDialog_camera.FileName, ImageFormat.Jpeg);
  }   
  }
  else
  {
  MessageBox.Show("摄像头没有开启,不能抓图,请开启摄像头!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  }
  }
  catch
  {
  MessageBox.Show("抓取图像时出现错误!", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
  }
  }

  private void btn_CloseCapture_Click(object sender, EventArgs e)//关闭摄像头
  {
  Camera.SendMessage(this.hHwnd, 0x40b, 0, 0);
  Camera.DestroyWindow(this.hHwnd);

  Clipboard.Clear();//清除剪切板中的内容
  isOpen = false;
  }
  private void btn_set_Click(object sender, EventArgs e)//对摄像头进行设置
  {
  if (isOpen)
  Camera.SendMessage(this.hHwnd, 0x42a, 0, 0);
  else
  MessageBox.Show("摄像头没有开启,不能设置,请开启摄像头!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  }

  private void btn_kinescope_Click(object sender, EventArgs e)//开始录像,录像过程中鼠标成漏斗形,对着图像显示区域单击鼠标左键或右键就结束了录像。
  {
  if (isOpen)
  {
  SaveFileDialog SaveFileDialog_Video = new SaveFileDialog();
  SaveFileDialog_Video.FileName = fileName + ".avi";
  SaveFileDialog_Video.Filter = "Video Files(*.avi)|*.avi";
  if (SaveFileDialog_Video.ShowDialog() == DialogResult.OK)
  {
  SendMessage(this.hHwnd, 0x414, 0, SaveFileDialog_Video.FileName);
  SendMessage(this.hHwnd, 0x43e, 0, 0);
  }
  }
  else
  MessageBox.Show("摄像头没有开启,不能录像,请开启摄像头!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  }

  private void btn_stopKinescope_Click(object sender, EventArgs e)//停止录像
  {
  SendMessage(this.hHwnd, 0x444, 0, 0);  
  }

    
  }
}






下面就是另一个控件 AForge

demo: Camera.rar (174.41 KB, 下载次数: 13)
回复

使用道具 举报

 楼主| 发表于 2014-11-13 14:19:31 | 显示全部楼层
love'点点 发表于 2014-11-12 22:26
我以前弄过的是两种东西,一个是直接调用本地摄像头驱动,另一个是AForge类库操作。

谢了,我这几天好好看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-12 02:51

© 2014-2021

快速回复 返回顶部 返回列表