《OpenCV 3 和Qt5计算机视觉应用开发》读后感
0
书本封面
链接
1.综述
1.1前言
注意到这本书完全是因为书名,因为和自己的课题方向很适合,所以经图书馆荐购,假期借回家看了。疫情的原因,荒唐了许久,最近才翻出来整个的过了一遍,书是图书馆的还要还,所以趁着热乎劲把感受记录下来。
1.2书籍简介
书如其名,这本书的主要内容就是利用Qt配合OpenCV进行计算机的视觉应用的开发,书的作者是个伊朗人,中译版2019出版。从书的内容而言,是更关注实际操作的,书本不算厚,又有不少插图,自我感觉是比较适合入门者对Qt和OpenCV的结合有一个初步的了解的,但是对于进阶者可能就显得浅了些。书本的优点在于操作性强并且配套的有源码,尤其是前面几章,能很好的引领小白完成入门。缺点呢,两部分,一是可能由于是译书,语言感觉不是特别的精准;另外就是,后面有一些章节可能受限于篇幅,讲解不够丰富,列出许多函数说明然后举个简单的例子就结束了。但是总体来说,这本书还是有价值的,尤其是对于想入门OpenCV+Qt的小伙伴。书本使用的是OpenCV3和Qt5,也算是较新的版本了。
2.书本结构
2.1书本目录
3.一些小补丁
3.1安装环境问题
这本书里用的Qt5.9和OpenCV3.3.0,但是我实际的环境是Qt5.10.1和OpenCV3.4.8,没啥影响,是能正常工作的。另外有一个就是,书里面的OpenCV是自己下载源码然后Cmake构建的,我当时Cmake有些问题,自己下载了opencv的可执行文件,安装解压就是了,其他和书里一样。
3.2读取图片的格式选择
在书里P51页,也即第二章Hello_Qt_Opencv工程inputPushButton的pressed槽函数。
void MainWindow::on_inputPushButton_pressed() { QString fileName = QFileDialog::getOpenFileName(this, "Open Input Image", QDir::currentPath(), "Images (*.jpg *.png *.bmp)"); if(QFile::exists(fileName)) { ui->inputLineEdit->setText(fileName); } }
在这里"Images (.jpg .png .bmp)"处,照书中的写法我运行时无法读取图片,修改为"Images (;;.jpg ;;.png ;;.bmp)"后可以运行。应该是和QFileDialog::getOpenFileName函数的性质有关,因为自己本身就是入门,我没细查这个函数。
3.3Qt多语言模块
在做书中第三章的多语言支持部分,需要利用Qt的语言翻译工具,但是我遇到了与书中类似的问题,但是书中指示使用VS2015的命令行工具也没法解决。百度之后试了几下,稀里糊涂就好了,但我不太确定是哪个操作起的作用。依稀记得有环境变量的修改以及给与Qt Creator 管理员权限。
3.4Qt 菜单栏的设计
在同样第三章,P80有涉及对菜单栏的新建与分栏,以及添加槽函数。但是书中这一块的描述不是很清楚,虽然操作上不难,但是对于小白可能就卡住了,我是又从别的资料里对照的学了下。说来也简单,在菜单栏的分栏时只需要使用回车键就可以分栏,同时菜单栏的槽函数无法右键添加,要使用设计界面下方的Action Editor栏。
3.5Qt使用拖放事件拖动图片进入应用窗口
这一块也是我很莫名其妙的一个地方,书中第四章P118,设计了一个图片浏览器可以拖动图片文件进入窗口然后播放图片。但是吊诡的是,完成程序运行后显示是无法拖放图片进入窗口的,多次检查程序没有问题。后来发现,如果直接打开构建文件夹的可执行文件就是一切正常的。只有在QT中运行无法拖放文件,令人费解。
3.6还有一个小小的笔误
在P118页,应该是QFileInfo file(event->mimeData()->urls().at(0).toLocalFile());
而不是QFileInfo file(event->mimeData()->urls().at(0).toLocal