1. 程式人生 > 實用技巧 >《OpenCV 3 和Qt5計算機視覺應用開發》讀後感

《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