在上一篇关于OPENcv的文章中已经讲解了opencv环境配置,这次结合qt做一个实际程序,我是用qt做界面,vs编程写程序,和qtcreat的也很相似。QT的配置点击打开链接可以看这个博主也可以自己搜索。配制方法很简单就是配置了QT之后原来OPENCV的配置要重新配置一遍。
摄像头程序是这位大神的文章点击打开链接:我在VS上稍微修改一下。
namespace Ui
{
class cmaerGet;
}
class cmaerGet : public QWidget
{
Q_OBJECT
public:
explicit cmaerGet(QWidget *parent = 0);
~cmaerGet();
private slots:
void openCamara(); // 打开摄像头
void readFarme(); // 读取当前帧信息
void closeCamara(); // 关闭摄像头。
void takingPictures(); // 拍照
private:
Ui::cmaerGet *ui;
QTimer *timer;
QImage *imag;
CvCapture *cam;// 视频获取结构, 用来作为视频获取函数的一个参数
IplImage *frame;//申请IplImage类型指针,就是申请内存空间来存放每一帧图像
};
namespace的作用
减少大型软件的变量函数和类重名的问题。每个namespace都可以随意命名变量,不用担心冲突,namespace 的
namespace
space1{
int
x;
}
namespace
space2{
int
x;
}
这两个x使用时不会冲突
class 类名
{
class Widget里面有个声明 Ui::cmaerGet *ui;
这个ui是namespace Ui里的cmaerGet 类,而这个类又是简单的继承了ui_cmaerGet _h里的Ui_cmaerGet类(没有添加任何成员)
现在就很清楚了,这两个看起来名字一样的cmaerGet 其实是两个类,一个是namespace Ui里的而另一个不是
namespace Ui里的cmaerGet 类其实就是个空壳,而他的基类也仅仅是把此窗口上的所有控件的声明、实例化、初始化了,仅仅是为了分离ui和其他控制代码
class Widget里面有个声明 Ui::cmaerGet *ui;
这个ui是namespace Ui里的cmaerGet 类,而这个类又是简单的继承了ui_cmaerGet _h里的Ui_cmaerGet类(没有添加任何成员)
这个ui是namespace Ui里的cmaerGet 类,而这个类又是简单的继承了ui_cmaerGet _h里的Ui_cmaerGet类(没有添加任何成员)