|
大神!全靠你了~我在做毕设~~百度我搜了N久也没找到~~~我说一下我的环境(配置都是按照TQ210的资料配的,直接在QT上编译,系统是挂载的,然后把库,执行程序都拷到了挂载文件系统的相应目录,然后就执行,段错误~~~)
wtest.cpp如下
#include "wtest.h"
#include "ui_wtest.h"
wtest::wtest(QWidget *parent) :
QWidget(parent),
ui(new Ui::wtest)
{
ui->setupUi(this);
//初始化成员变量
m_timer = new QTimer(this);
m_camera = NULL;
m_imgFrame = NULL;
//连接信号和槽
connect(ui->start, SIGNAL(clicked()), this, SLOT(sltBtnOpenCamera()));
connect(ui->stop, SIGNAL(clicked()), this, SLOT(sltBtnCloseCamera()));
connect(m_timer, SIGNAL(timeout()), this, SLOT(sltTimeOut()));
}
wtest::~wtest()
{
delete ui;
}
void wtest::sltBtnOpenCamera()
{
//打开摄像头 从摄像头中获取视频
//试过0,1,202都不行,下板就段错误
m_camera = cvCreateCameraCapture(0);
//开启定时器 没隔0.5秒刷新一次
m_timer->start(500);
}
void wtest::sltTimeOut()
{
//读取摄像头信息 将读取回来的帧转换成QImage类型 并在主界面的QLabel中显示
//从摄像头中抓取并返回每一帧
m_imgFrame = cvQueryFrame(m_camera);
//将抓取到的帧转换成QImage格式
QImage showImage((const uchar*)m_imgFrame->imageData, m_imgFrame->width, m_imgFrame->height, QImage::Format_RGB888);
//将图片显示到QLabel上
ui->label->setPixmap(QPixmap::fromImage(showImage));
}
void wtest::sltBtnCloseCamera()
{
//释放摄像头内存
cvReleaseCapture(&m_camera);
//停止定时器
m_timer->stop();
}
void wtest::changeEvent(QEvent *e)
{
QWidget::changeEvent(e);
switch (e->type()) {
case QEvent::LanguageChange:
ui->retranslateUi(this);
break;
default:
break;
}
}
|
|