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和 ...
随机推荐
- Loadrunner11之禁用/启用Action
Loadrunner11之禁用/启用Action 大家在用Loadrunner11录制脚本的时候,会产生多个action,比如login, search, logout.在调试脚本的时候,我不想从 ...
- Codeforces Round #248 (Div. 1) C - Tachibana Kanade's Tofu AC自动机
C - Tachibana Kanade's Tofu 思路:把 n 个串丢进AC自动机中,然后dp就好啦. 我的代码居然是在CF上跑最快的.. #include<bits/stdc++.h&g ...
- Request常用方法(转)
原文地址:http://www.lihuai.net/program/python/1617.html Python Requests库:HTTP for Humans 时间: 2014/12/30 ...
- linux config
1.自定义命令:.bashrc 文件添加自定义命令 2.完成后,命令:source . .bashrc 使配置的自定义命令生效,如果提示没有该命令的情况,用 . .bashrc (注意是2个“点 ...
- CentOS下的日志切割
在Linux下,日志会不停的增长,为了防止日志文件过大,导致我们无法在日志中快速找到想要的信息,我们会定时对日志文件进行切割.在这里我将使用logrotate切割日志. (1).logrotate的配 ...
- 手动制作用于启动BeagleBoneBlack(am335x)的SD
1.需求MLO.u-boot.img.uImage.Systemfile 获取MLO.u-boot.img下载U-boot源码,解压获得源码,进入源码目录 cd /home/zyr/Source_co ...
- C#中的特性 (Attribute) 入门 (一)
C#中的特性 (Attribute) 入门 (一) 饮水思源 http://www.cnblogs.com/Wind-Eagle/archive/2008/12/10/1351746.html htt ...
- github安装k8s
转:https://mritd.me/2016/10/29/set-up-kubernetes-cluster-by-kubeadm/#23镜像版本怎么整 一.环境准备 首先环境还是三台虚拟机,虚拟机 ...
- 机器学习之路:python 集成分类器 随机森林分类RandomForestClassifier 梯度提升决策树分类GradientBoostingClassifier 预测泰坦尼克号幸存者
python3 学习使用随机森林分类器 梯度提升决策树分类 的api,并将他们和单一决策树预测结果做出对比 附上我的git,欢迎大家来参考我其他分类器的代码: https://github.com/l ...
- luoguP5105 不强制在线的动态快速排序 [官方?]题解 线段树 / set
不强制在线的动态快速排序 题解 算法一 按照题意模拟 维护一个数组,每次直接往数组后面依次添加\([l, r]\) 每次查询时,暴力地\(sort\)查询即可 复杂度\(O(10^9 * q)\),期 ...