本⽂主要是做摄像头采集图像的处理以及视频的处理,通过VS2019和opencv4.0⼯具,并结合QT5.9,显⽰处理结果,制作成⼩程序。
控件说明
控件名称功能
pushButton_openCam打开摄像头
pushButton_closeCam关闭摄像头
pushButton_processCam处理摄像头采集的图像
pushButton_saveVideo保存摄像头采集的视频
pushButton_saveComplete结束保存采集的视频
pushButton_openVideo打开视频(原已经有的视频)
pushButton_videoProcess处理视频
pushButton_displayResult显⽰结果(摄像头采集的和视频处理的)
label_origin原始视频显⽰(label显⽰的,是视频)
label_process处理后的结果(label显⽰的,是视频)
textBrowser显⽰结果(label显⽰的,是数据)
void on_pushButton_openCam_clicked(); //打开摄像头
void on_pushButton_closeCam_clicked(); //关闭摄像头
void on_pushButton_displayResult_clicked(); //显⽰结果(摄像头采集的和视频处理的)
void on_pushButton_openVideo_clicked(); //打开视频(原已经有的视频)
void on_pushButton_processCam_clicked(); //处理摄像头采集的图像
void on_pushButton_saveComplete_clicked(); //结束保存采集的视频
void on_pushButton_saveVideo_clicked(); //保存摄像头采集的视频
void on_pushButton_videoProcess_clicked(); //处理视频
void display_frame();
3、界⾯设计
管式反应器4、部分函数代码
//打开摄像头
void videoCam::on_pushButton_openCam_clicked()
{
capture.open(1); //打开摄像头,0表⽰默认的,1表⽰⾃⼰的USB摄像头 if (!capture.open(1))
{
qDebug() << "Camera Open Failed.";
return;
}
timer.start();
}
void videoCam::on_pushButton_closeCam_clicked()
{
timer.stop();
ui.label_origin->clear(); //关闭原视频泪血症
ui.label_process->clear();
}
void videoCam::display_frame()
{
capture >> frame;
QImage img1 = QImage((const unsigned char*)frame.data, ls, ws, QImage::Format_RGB888).rgbSwapped();
ui.label_origin->setPixmap(QPixmap::fromImage(img1));
}
光滑塞规
void videoCam::on_pushButton_displayResult_clicked()
{
capture >> frame;
//超绿计算,Otsu变换
Mat extraGreenImg;
extraGreenImg = extraGreen(frame); //⾃定义函数
停车场门禁系统Mat extraGreenImgOtsu;
threshold(extraGreenImg, extraGreenImgOtsu, 50, 255, THRESH_OTSU | THRESH_BINARY);
auto data = calcRatio(extraGreenImgOtsu, 150, 255); //⾃定义函数
double ratio = get<0>(data);
int part = get<1>(data);
}
5、后记
本⽂中是根据⾃⼰的项⽬进⾏做的,有很多的不⾜需要改正,仅仅给做⼀个记录,希望对⼤家有参考的价值。
项⽬的需要实现两个功能:1>通过摄像头采集图像,并能够实时处理。
2>使⽤已知的视频,并实时处理,得到结果并显⽰。机器人定位
6、参考链接
>点钞机电机