Qt and OpenCV 3 on Windows (使用 MinGW)

介紹一下怎麼在 Windows 下使用 Qt 和 OpenCV 3.

系統環境

  • Windows 7
  • Qt5.10.0 (編譯器選擇 mingw530_32)
  • OpenCV 3.3.1 (準備用 mingw 來 build)
  • Cmake

安裝 Qt

先從官網下載 Qt, 目前最新為5.10, 安裝好之後
並把 Qt dll 路徑加進系統環境變數裡 (這步很重要, 因為要用它來編譯OpenCV)

1
2
C:\Qt\Qt5.10.0\5.10.0\mingw53_32\bin
C:\Qt\Qt5.10.0\Tools\mingw530_32\bin

編譯 OpenCV (使用 MinGW 編譯)

從官網下載 OpenCV 並解開, 執行下列指令

1
2
3
4
cd opencv-3.3.1
mkdir build
cd build
cmake-gui.exe ..

在make-gui上按照下方流程進行

1
2
3
選擇 MinGW Makefiles  
選擇 Use default native compilers
再按 Finish

按 Configure 會報錯說沒設定 CMAKE_CXX_COMPILERCMAKE_C_COMPILER
不管它再按一下 Configure 他會自動找到

1
2
勾選 WITH_OPENGL
勾選 WITH_QT

再按一下 Configure, 再按 Generate
接下來就可以開始編譯與安裝

1
2
mingw32-make -j8
mingw32-make install

把 OpenCV dll 目錄加進系統環境變數裡 (這步很重要, 否則執行期間會找不到dll)

1
C:\opencv\build\x86\mingw

之後在 Qt 專案檔 .pro 加入下列變數

1
2
3
4
5
6
7
8
INCLUDEPATH += C:\opencv\build\include
LIBS += -LC:\opencv\build\x86\vc14\lib \
-lopencv_core331 \
-lopencv_highgui331 \
-lopencv_imgcodecs331 \
-lopencv_imgproc331 \
-lopencv_features2d331 \
-lopencv_calib3d331

搞定結束!

疑難雜症

Q. 遇到 windres.exe: unknown option -- W 編譯錯誤怎辦?
A. cmake 取消勾選 ENABLE_PRECOMPILED_HEADERS

Q. 遇到 modules/videoio/src/cap_dshow.cpp error: 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope 編譯錯誤怎辦?
A. 編輯 opencv-3.3.1/modules/videoio/src/cap_dshow.cpp
#include "DShow.h" 前面加入 #define NO_DSHOW_STRSAFE 定義

參考文章
https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows
https://ricky.moe/2017/06/17/qt5-6-2-opencv3-1-integration/

其它相關文章推薦
[Qt] 讀檔,讀取 txt 文字檔
[Qt] 寫檔,寫入 txt 文字檔
安裝 Qt 在 Windows 7 (使用MSVC)
Qt產生的exe發布方式
Qt 新增多國語言.ts翻譯檔案
Qt5的中文亂碼問題如何解決

Ubuntu 安裝 Hexo

本篇紀錄在 Ubuntu 下安裝 Hexo 的過程與步驟,

安裝環境

  • Ubuntu 16.04 LTS
  • node v4.2.6 (node -v 指令查看)
  • npm v3.5.2 (npm -v 指令查看)

安裝步驟

已有 nodejs 環境直接跳到 步驟3
步驟1. 安裝nodejs

1
2
sudo apt-get update
sudo apt-get install nodejs nodejs-legacy npm

步驟2. 安裝hexo

1
sudo npm install hexo-cli -g

檢查版本

1
2
3
4
5
6
7
8
9
10
11
12
$ hexo version
hexo-cli: 1.0.4
os: Linux 4.10.0-37-generic linux x64
http_parser: 2.5.0
node: 4.2.6
v8: 4.5.103.35
uv: 1.8.0
zlib: 1.2.8
ares: 1.10.1-DEV
icu: 55.1
modules: 46
openssl: 1.0.2g-fips

步驟3. 初始化一個部落格工作環境:

1
2
3
hexo init blog
cd blog
npm install

步驟4. 啟動 server 來看看網誌

1
hexo server

步驟5. 建立新文章

1
hexo new [layout] 'new-article'

生出來的文章檔案會在 source/_drafts/source/_posts/source/ 下,單看你選擇什麼 layout 的模板。
搞定完成!

參考文章
https://oawan.me/2016/easy-hexo-easy-blog/
https://www.jianshu.com/p/dd111ea16f4d
https://www.jianshu.com/p/24cb74aeb0a3
https://wwssllabcd.github.io/blog/2014/12/22/how-to-install-hexo/
官網 寫作教學
如何使Hexo以文章分類為URI?
Xuan’s Blog Hexo 安裝
線上md寫作
Hexo-撰寫文章 (內含 title、data、tags、keywords、description、categories 範例)
http://ibruce.info/2013/11/22/hexo-your-blog/ (內含 favicon 製作)

相關文章
Hexo 使用 Google Analytics 進行網站流量分析
Hexo 本機測試時如何關閉 Google Analytics
Hexo codeblock 插入程式碼區塊與各種程式語言預覽
升級更新 Hexo upgrade
Hexo 熱門主題列表
Mac OS 安裝 Hexo

Hexo 快捷鍵

基本常用快捷鍵

1
2
3
4
hexo s -> hexo server
hexo n -> hexo new
hexo d -> hexo deploy
hexo g -> hexo generate

清除緩存文件 db.json 和已生成的靜態文件 public

1
hexo clean

Ubuntu 安裝中文輸入法 (注音)

本篇介紹在 Ubuntu 下如何安裝中文注音輸入法(新酷音輸入法)

20190928 Update 目前使用情形

ibus 是 Ubuntu 16.04 內建的輸入法平台,我們只需將裝 ibus 的注音輸入法即可
ibus 安裝方式

1
sudo apt-get install ibus ibus-chewing

fcitx 安裝方式

1
sudo apt-get install fcitx fcitx-chewing

目前使用情形

以前我都用 ibus,有一段時間發現它無法在 sublime 上輸入中文,後來就改用 fcitx 一直到現在。
目前都還是用 Ubuntu 16.04,希望 18.04 已經修正這些問題了。

DIY 自製 Arduino 遙控車

本篇紀錄我 DIY 自製 Arduino 遙控車的作品,因為興趣所以自學 Arduino,之後 Arduino 玩得很熟了一直想做點應用,加上自己很想做遙控車很久了,自從看到 MAKE 雜誌某一期之後,更激發我的動力,某天心中小宇宙終於爆發,於是我去買了田宮的工作樂和遙控器來自製 DIY 我的 Arduino 遙控車。

本篇當初 po 在 Mobile 01,事隔多年(近10年)決定放在我的網站,畢竟別人的地盤什麼時候會收起來誰也說不準,

Part 1

2011/07/20

田宮工作樂包裝盒。

裡面的零件。

組好的樣子,電池盒就不用組了,要留空間擺控制板。

背面來一張,兩段變速唷!


Part 2

2011/08/07

前輪的轉向機構讓我想了好一陣子,因為我的mini伺服器方向舵的孔太小了,跑了好幾家電子材料行都沒有合適的螺絲,最後決定不用螺絲的方式了,用吃剩的冰棒組起來固定…哈哈!!好讓mini伺服器可以卡住,而方向舵是直接套在鐵絲上。

我是買 E_sky 的套件(發射 + 接收 + mini 伺服器*2)

控制器是用現在很夯的 arduino 啦!

迅速的寫完程式上傳,後輪騰空來測試囉!

驅動馬達晶片是L293D。

這是測試影片。


最後發現我買的9V電池竟然不能驅動馬達(USB供電可以驅動),猜想是電池輸出的電流太小了,不知道要買什麼電池才可,改天再解決這個問題。


Part 3

2011/08/08

今天決定採用獨立對馬達供電,與控制板的供電分開,這樣馬達應該可以獲得較大的驅動電流,在幾番測試下,終於可以離開USB供電了!!!

這是今天做的電池與控制板架子,又是選用吃剩的冰棒當材料…

裝上車子的樣子

上電池、接收器、控制板!!

裝上車子的樣子,挺合身的~

上面來一張

準備要出發囉!!!

這是實際在地上跑的影片~沒玩過遙控車…要被左右搞混了…


後記

之後我還改版做成可以遠端看見遙控車視野,把 ipod touch 放在遙控車上,用 ipod touch 連上家裡的 WiFi AP,讓 ipod touch 回傳畫面給電腦,這樣我手拿遙控器坐著看電腦的畫面就能看見遙控車開去哪了~~~