SXH232摄像头使用示范
It occurred to me suddenly that I wanted to program the our camera sensor for PC desktop, just like the one purchased from shop, which can make the video recording. Finally although the result seemed
not to be as good as expected, it improved me.
Here I used the SXH232-V1 camera. Judging from literal meaning, it has RS232 port obviously.So first connect the camera to PC with 232 port correctly. Then create a winform VS project, and create
a form like this:
Here's what I intend to do. when I click "start taking photo" button, the picture taken by camera is showed in the picturebox in no time.If the speed is fast enough, then we'll
see a video made up of several frames of pictures. However to my pity, I haven't done it completely, which means it has a few seconds of delay.
OK, then let's see the main code:
private SXH sxh = new SXH();
private Queue<Image> queue = new Queue<Image>();
private Image img = null; Thread pic, pbx; public Form1()
{
InitializeComponent();
this.comboBox1.Text = "COM1";
this.comboBox2.Text = "115200";
this.comboBox3.Text = "640x480";
this.comboBox4.Text = "2"; sxh.InitSXH(this.comboBox1.Text, Convert.ToInt32(this.comboBox2.Text),
this.comboBox3.Text,Convert.ToInt32(this.comboBox4.Text));
}
first create some private members and initiate the form and camera
private void button1_Click(object sender, EventArgs e)
{
pic = new Thread(new ThreadStart(TakePic));
pic.Start(); pbx = new Thread(new ThreadStart(ShowPic));
pbx.Start(); this.comboBox1.Enabled = false;
this.comboBox2.Enabled = false;
this.comboBox3.Enabled = false;
this.comboBox4.Enabled = false;
this.button1.Enabled = false;
}
when I start taking, the message handling function creates two threads. One is responsible for taking picture, another for showing it.
public void TakePic()
{
byte[] data = null;
while (true)
{ sxh.GetData(0x01, out data);//获得图片字节 if (data != null)
{
MemoryStream ms = new MemoryStream(data);
img = System.Drawing.Image.FromStream(ms);
} if (img != null)
{
img.RotateFlip(RotateFlipType.Rotate180FlipX);//若摄像头安反了。就反转一下
queue.Enqueue(img);
}
}
} public void ShowPic()
{
while (true)
{
if (queue.Count > 0)
{
Image img = queue.Dequeue();
this.pictureBox1.Size = img.Size;
this.pictureBox1.Image = img;
//Thread.Sleep(200);
}
}
}
the above are two threads. One puts the image into queue, anther gets image from the queue.
Of course, there is an important problem here. How do we get the data from camera? Well, we should write the camera driver according to camera document. As for the code, you
can refer to the doc here, or you can contact me.
Finally build the execute the program. let's watch a snapshot from camera:
It has to be acknowledged that this program has imperfections. Sometimes after a little long time running, it will raise a kind of exception. Apparently there are errors in
my code. Furthermore, I'm looking forward to seeing the real-time video instead of the delayed pictures, but actually I've no idea whether it can be achieved. I had thought that I could handle it with threads programming. Anyway something's wrong with my
design.
SXH232摄像头使用示范的更多相关文章
- Android开发之控制摄像头拍照
如今的手机一般都会提供相机功能,有些相机的镜头甚至支持1300万以上像素,有些甚至支持独立对焦.光学变焦这些仅仅有单反才有的功能,甚至有些手机直接宣传能够拍到星星.能够说手机已经变成了专业数码相机.为 ...
- 在DevExpress中使用CameraControl控件进行摄像头图像采集
在我们以前的项目了,做摄像头的图片采集,我们一般还是需要做一个封装处理的,在较新版本的DevExpress控件里面,增加了一个CameraControl控件,可以直接调用摄像头显示的,因此也可以做头像 ...
- ubuntu-Linux系统读取USB摄像头数据(gspca)
将摄像头图像保存为jpg格式.摄像头需要是gspca免驱的.uvc若用uvc格式的需要在图像中插入Huffman表.否则无法正常显示. 程序代码: #include <stdio.h> # ...
- ubuntu-Linux系统读取USB摄像头数据(uvc)
这几天在做小车的过程中,需要用到图像采集.我想现在用的摄像头是UVC免驱的.根据国嵌的教程中有一个gspca摄像头的程序.我发现把gspca的采集程序用到uvc上时,在显示图像的时候提示没有huffm ...
- C# 使用AForge调用笔记本摄像头拍照
vs2012 winform 连接摄像头设备,这里需要引入 代码: using AForge; using AForge.Controls; using AForge.Imaging; using ...
- Opencv摄像头实时人脸识别
Introduction 网上存在很多人脸识别的文章,这篇文章是我的一个作业,重在通过摄像头实时采集人脸信息,进行人脸检测和人脸识别,并将识别结果显示在左上角. 利用 OpenCV 实现一个实时的人脸 ...
- Opencv VideoCapture实时捕捉摄像头信息
#include "opencv2/highgui/highgui.hpp" #include <iostream> using namespace cv; using ...
- Unity打开摄像头占满全屏
Unity打开摄像头占满全屏 AR项目需求,Unity打开摄像头作为背景渲染占满全屏~ Unity对设备硬件操作的API并不是太友好~打开一个摄像头,渲染到屏幕上也都得自己写,虽然步骤少,提取摄像头t ...
- Vuforia unity开发摄像头问题
Vuforia unity开发摄像头问题 项目一直在赶进度,写博的时间越来越少了~从事Unity开发也快两个月了,AR方向~ 使用的是高通家的SDK Vuforia...从工程融合一直到对unity和 ...
随机推荐
- poj1970 The Game(DFS)
题目链接 http://poj.org/problem?id=1970 思路 题目的意思是判断五子棋棋局是否有胜者,有的话输出胜者的棋子类型,并且输出五个棋子中最左上的棋子坐标:没有胜者输出0. 这道 ...
- win10 远程桌面远程电脑时每次要输入密码及身份验证错误,要求的函数不受支持问题解决
解决以前每次远程时能能记住密码,更新系统补丁后现在每次登录要输入密码了及远程时提示身份验证错误,要求的函数不受支持问题 解决方法一.卸载更新安装的新补丁,远程桌面正常,能记住密码 解决方法二.修改注册 ...
- Java反射机制demo(三)—获取类中的构造函数
Java反射机制demo(三)—获取类中的构造函数 1,获取类中所有的构造函数 如下面的代码中所示,这个类中显式的构造函数有五个. 空构造: public UserInfo() 带参构造有四个: pu ...
- <泛> STL - vector 模拟实现
今天为大家带来一个模拟STL-vector的模板实现代码. 首先看一下测试结果,之后再为大家呈现设计 测试效果 测试代码 #include<iostream> #include<ve ...
- 批量ssh登录,获取操作系统、CPU、内存、硬盘信息<shell>
说明:该脚本读取machine.txt文件中的机器名,然后批量ssh登录,获取每台机器的操作系统,CPU,内存,硬盘等信息. 使用方法:将文件保存为sh,chmod +x filename 为该sh文 ...
- 把eclipse写好的web项目导入idea 部署到Tomcat
主要分为项目配置和tomcat配置两大步骤. 一.项目配置 打开idea,选择导入项 选择将要打开的项目路径后,继续选择项目的原本类型(后续引导设置会根据原本的项目类型更新成idea的项目),此例中选 ...
- “通用类型系统”(CTS)
一.什么是“通用类型系统”(CTS) 描述类型的定义和行为 二.CTS规范 一个类型可以包含零个或者多个成员1,成员①字段(Field)作为对象状态一部分的数据变量.字段根据名称和类型来区分②方法(M ...
- CodeForces1082G Petya and Graph 最小割
网络流裸题 \(s\)向点连边\((s, i, a[i])\) 给每个边建一个点 边\((u, v, w)\)抽象成\((u, E, inf)\)和\((v, E, inf)\)以及边\((E, t, ...
- [BZOJ4700]适者(CDQ分治+DP/李超线段树)
如果没有秒杀,就是经典的国王游戏问题,按t/a从小到大排序即可. 考虑删除两个数i<j能给答案减少的贡献:S[i]*T[i]+P[i-1]*A[i]-A[i]+S[j]*T[j]+P[j-1]* ...
- bzoj 5055: 膜法师 -- 树状数组
5055: 膜法师 Time Limit: 10 Sec Memory Limit: 128 MB Description 在经历过1e9次大型战争后的宇宙中现在还剩下n个完美维度, 现在来自多元宇 ...