上篇Blog谈了一下stm32驱动ov7670进行图像采集,这一篇谈一下后续的几个步骤:
1、图像处理
因为对图像质量要求不高,而且串口蓝牙通信速度局限于波特率。所以决定只传输灰度图像,简单地用了RGB565三个分量取高四位的均值。将两个像素拼接在一起,放在一个unsigned char变量里,前一像素的4位灰度值放在高四位,后一像素放在低四位。 这样就只需要传输320 * 240 / 2 = 38400个byte就可以了。
2、图像传输
用的经典蓝牙模块(hc05或hc06),很简单的串口程序,不再赘述。
3、图像显示
先来一张效果图!
如上图:是通过C#开发的WinForm程序,功能就是接受串口送来的像素灰度值,刷新出图片显示在右侧,并保存.bmp格式的图片到电脑
1)首先,将电脑蓝牙打开,连接MCU侧的经典蓝牙模块,在控制面板中打开蓝牙,并添加设备。在设备管理器中确保Bluetooth驱动已安装(上方红框)。
其实PC内置的蓝牙,对PC而言也就是一个串口设备,跟一般的232串口并无区别。所以可以在端口里可以看到两个COM口(下方红框),在上位机中打开COM26(因机而异)即可。
注:有的PC蓝牙打不开,可以百度一下如何打开,记得要去官网下载蓝牙驱动程序并安装
2)Winform程序
打开高逼格的VS2015
新建Windows窗体程序
通过左侧的工具箱,添加各种空间。通过右侧的属性窗口,更改属性值,最终的布局如下图:
网上类似的上位机程序应该有很多,下面附上我的程序,一部分也是参照网友的程序修改的,得于网络,馈于网络:
用到的东西应该也就 串口类SerialPort 、 线程Thread 、 Bitmap类 三样东西,相对简单。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MyCom
{
public partial class Form1 : Form
{