没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
一、集合OpenCV 的视频功能和QCamera 的摄像头接口,开发出易于理解的、结 构简单的摄像头控制和采集框架。 二、为基于OpenCV 的图像处理程序编写界面—关于QT\MFC\CSharp 的选择以及GOCW 的介绍 三、Windows 环境下最新OpenCV 和Contribute 代码的联合编译 四、基于opencv 和mfc 的摄像头采集代码 五、答题卡图像识别项目 六、OpenCV 自带dnn 的Example 研究(1)—classification
资源推荐
资源详情
资源评论
GOQTTemplate 简单介绍
第一页第 1 项目
集合 OpenCV 的视频功能和 QCamera 的摄像头接口,开发出易于理解的、结
构简单的摄像头控制和采集框架。
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
timer = new QTimer(this);
imag = new QImage(); // 初始化
connect(timer, SIGNAL(timeout()), this, SLOT(readFarme())); // 时间到,读
取当前摄像头信息
bMethod = false;//是否使用算法
//填充界面控件
const QList<QCameraInfo> availableCameras =
QCameraInfo::availableCameras();
for (const QCameraInfo &cameraInfo : availableCameras)
{
ui->comboCamera->addItem(cameraInfo.description());
}
ui->comboCamera->setCurrentIndex(0);
bCameraOpen = false;
//显示的图像自动缩放
ui->label->setScaledContents(true);
ui->label_2->setScaledContents(true);
}
在界面初始化的时候,就直接填充界面。注意这里 setScaledContents 的设置使得
图像能够填充满整个窗体。
另一个非常关键的一句就是
connect(timer, SIGNAL(timeout()), this, SLOT(readFarme())); // 时间到,读取当
前摄像头信息
相当于 ontimer,非常直观吧。
// 从摄像头中抓取并返回每一帧
void MainWindow::readFarme()
{
videocapture->read(matFrame);
//是否图像处理
Mat tmp;
if(bMethod)//这里只是简单地实现一个 Canny 算法
{
cvtColor(matFrame,tmp,COLOR_BGR2GRAY);
cv::Canny(tmp,tmp,100,255,3);
cvtColor(tmp,matDst,COLOR_GRAY2BGR);
}
else
{
matDst = matFrame.clone();
}
// 格式转换
QPixmap qpixmap = Mat2QImage(matDst);
jsxyhelu.cnblogs.com内容集锦(2019年5月3日)
1
// 将图片显示到 label 上
ui->label->setPixmap(qpixmap);
}
这里使用了 Mat2QImage 函数,将图像转换为 qpixmap,并且显示在 label 上
//打开磁盘上的图片
void MainWindow::on_pushButton_clicked()
{
//第 3 个参数表示查找文件时从哪个目录开始,如果为"."的话,表示从该工程目录开始查找,
最后那个参数的过滤器的名字之间
//要用空格,否则识别不出来
QString img_name = QFileDialog::getOpenFileName( this, tr("Open Image"),
".",tr("Image Files(*.png *.jpg *.jpeg *.bmp)"));
if(img_name == "")
return;
//toAscii()返回 8 位描述的 string,为 QByteArray,data()表示返回 QByteArray 的指
针,QByteArray 为字节指针
//现在已改为 toLatinl 函数
Mat src = imread(img_name.toLatin1().data());
cvtColor( src, src, CV_BGR2RGB );
QImage img = QImage( (const unsigned char*)(src.data), src.cols,
src.rows, QImage::Format_RGB888 );
ui->label->setPixmap( QPixmap::fromImage(img) );
img_name.clear();
}
可以直接使用函数,打开磁盘上的图片。
//打开摄像头
void MainWindow::on_pushButton_OpenCam_clicked()
{
int i = ui->comboCamera->currentIndex();
//打开摄像头,从摄像头中获取视频
if(bCameraOpen)
{
videocapture->release();//kill camera first
}
videocapture = new VideoCapture(i);
bCameraOpen = true;
//这里给出了一个非常大的分辨率,如果摄像头没有这么大的分辨率,则会默认打开其支持的最大
分辨率
videocapture->set(CV_CAP_PROP_FRAME_WIDTH, 2592);
videocapture->set(CV_CAP_PROP_FRAME_HEIGHT, 1944);
// 开始计时,超时则发出 timeout()信号
timer->start(0);
}
jsxyhelu.cnblogs.com内容集锦(2019年5月3日)
2
为基于 OpenCV 的图像处理程序编写界面—关于
QT\MFC\CSharp 的选择以及 GOCW 的介绍
第一页第 2 项目
基于OpenCV编写图像处理项目,除了算法以外,比较重要一个问题就是界
面设计问题。对于c++语系的程序员来说,一般来说有QT/MFC两种考虑。QT的确
功能强大,特别是QML编写android界面很有一套
(https://www.cnblogs.com/jsxyhelu/p/8286476.html
),在树莓派上进行设
计也很方便(https://www.cnblogs.com/jsxyhelu/p/7839062.html
);但是使
用QT的一个现实问题就是和现有平台的结合,比如客户需要将结果导出到excel
中,使用QT就比较别扭(当然不是说不可以)。所以现在我一般这样来做:对
于Android和PI,或者需要在Linux上运行的项目,使用QT编写界面,调用
Opencv函数;对于需要在windows上运行的项目,使用MFC编写界面,直接就可
以引用OpenCV。
有人会吐槽MFC使用起来非常麻烦,这点我非常同意。但MFC经过这么多年
的发展,今日仍有活力,并且短时间内不会消失。因为相比较其他一些所见即
所得的语言和环境来说(QT/Csharp),mfc的消息映射机制和坐标体系等,的确
有它的优势,对于图像处理程序来说尤其如此;加以积累,能够快速做出很多
专业的东西;近期出现的ribbon界面也为mfc加分不少
(https://www.cnblogs.com/jsxyhelu/p/9209052.html
)
选择了MFC这个方向,思考图像处理程序问题,一般来说分为“处理图像”
和"处理视频"两类:对于图像处理来说,我提供的GOPaint框架
(https://www.cnblogs.com/jsxyhelu/p/6440910.html
)能够提供一个基本的
静态图像处理框架;而GOMFCTemplate2
(https://www.cnblogs.com/jsxyhelu/p/GOMFCTemplate2.html)则适合用来
处理视频。这两种都分别成功运用于多种视频处理项目中。
但是这里我想更进一步:希望能够用Csharp编写界面,因为它更好用;但
是又不想引入EmguCV类似的库,因为里面很多东西不是我需要的。那么最直接
jsxyhelu.cnblogs.com内容集锦(2019年5月3日)
4
的方法就是使用Csharp调用基于Opencv编写的类库文件(Dll)的,我取名叫做
GreenOpenCsharpWarper(GOCW)
经过比较长时间的探索研究,目前的GOCW已经可以直接以函数的形式在内
存中传递bitmap和Mat对象,达到了函数级别的应用。因为这里涉及到托管代码
编写,也就是CLR程序编写,所以有比较复杂的地方;为了展现GOCW的优良特
性,我编写实现GOGPY项目,也就是一个"Csharp编写界面,OpenCV实现算法的
实时视频处理程序”,相关细节都包含其中。之所以叫“GPY”,是采集硬件这
块,我采用了成像质量较好的高拍仪设备(GaoPaiYi)。
jsxyhelu.cnblogs.com内容集锦(2019年5月3日)
5
剩余391页未读,继续阅读
资源评论
AllisWell_WP
- 粉丝: 103
- 资源: 129
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功