【前言】
計算機視覺繫統的應用越來越廣泛:在北冰洋部署了計算機視覺繫統,以便在夜間發現冰山;各種飛行器上應用了計算機視覺繫統,它們飛過亞馬孫熱帶雨林,繪制火災、破壞雨林和非法伐木的航拍圖;世界各地的港口和機場設立了計算機視覺繫統,以掃描嫌疑人和違禁品;計算機視覺繫統也被應用到馬裡亞納海溝以引導自主潛艇;將計算機視覺繫統應用於手術室,幫助外科醫生可視化手術過程並監控病人的當前狀況;將計算機視覺繫統作為熱尋防空火箭的轉向繫統從戰場上發射。類似的應用不勝枚舉。
我們可能很少(或從未)去過這些地方。然而,故事往往鼓勵我們想像的環境和一個人在這些無情的條件下對工具的依賴。這讓我想到了當代影視作品中受歡迎的人物之一,他是一個普通的男人(英俊,但不太帥;聰明,但不過於聰明),穿著西裝,為英國政府工作,總是選擇同樣的飲料、同樣類型的女人,用同樣的語調傳遞雙關語,帶著一些奇特的科技武器,被派去從事危險的工作。他就是007繫列電影的主人公:詹姆斯·邦德。
這本書討論了非常有用的技術和技巧,並從特工小說中獲得靈感。邦德繫列電影在偵查、偽裝、智能設備、圖像拍攝,有時甚至是在計算機視覺方面都有豐富的創意。憑借想像力,再加上努力學習新技能,我們可以和邦德的工程師Q一較高下!
【本書目標讀者】
本書是為那些想讓計算機視覺成為他們生活中實用而有趣的一部分的技術人員而編寫的。你應該熟悉2D圖形概念、面向對像語言、GUI、網絡和命令行。本書假設你沒有任何特定庫或平臺的經驗,書中涵蓋了從設置開發環境到部署完成應用程序的所有內容。
學習多種技術和技巧,然後將其集成起來的願望是非常有益的!本書將幫助你理解與計算機視覺相關的幾種類型的繫統和應用領域,並幫助你將一些方法應用於檢測、識別、跟蹤和增強人臉、物體及運動。
【本書內容】
第1章幫助我們在Windows、macOS或Linux繫統上安裝OpenCV、Python開發環境和Android開發環境。在該章中,我們還在Windows或macOS上安裝Unity開發環境。
第2章幫助我們根據配色方案對房地產圖像進行分類。我們是在豪宅外,還是在豪宅內?在該章中,我們將在搜索引擎中使用分類器來標記圖像結果。
第3章幫助我們檢測和識別人臉與貓臉,作為控制警報的一種手段。Ernst Stavro Blofeld帶著他的藍眼睛安格拉貓回來了嗎?
第4章幫助我們檢測運動並識別動作,將其作為控制智能手機上猜謎遊戲的一種手段。手機知道邦德為什麼點頭,即使其他人都不知道。
第5章幫助我們檢測汽車頭燈,對其顏色進行分類,估計與它的距離,並為駕駛員提供反饋。那輛車是在跟蹤我們嗎?
第6章幫助我們在紙上畫一個迷宮中的球,並將其看成是智能手機上的一個物理模擬。物理和時間是一切!
第7章幫助我們放大實時視頻中的運動,使人的心跳和呼吸變得清晰可見。
第8章幫助我們改進前一章的項目,采用專業相機進行高速、紅外線或紫外線成像。超越人類視覺的極限!
附錄A幫助我們解決在某些樹莓派環境中影響wxPython GUI庫的兼容性問題。
附錄B幫助我們發現OpenCV的除本書項目中使用的功能之外的更多特征檢測功能。
附錄C幫助我們學習在Python環境中運行Python代碼以及測試OpenCV的安裝。
【配置】
本書支持多種操作繫統作為開發環境,包括Windows 7 SP 1或更高版本、macOS X 10.7(Lion)或更高版本、Debian Jessie、Raspbian、Ubuntu 14.04或更高版本、Linux Mint 17或更高版本、Fedora 28或更高版本、Red Hat Enterprise Linux(RHEL)8或更高版本、CentOS 8或更高版本、openSUSE Leap 42.3、openSUSE Leap 15.0或更高版本,以及openSUSE Tumbleweed。
本書包含6個項目,需求如下:
這6個項目中有4個項目是在Windows、macOS或Linux上運行的,需要一個網絡攝像頭。這些項目可以選擇使用樹莓派或其他運行Linux的單板計算機。
一個項目在Android 5.0(Lollipop)或更高版本上運行,需要一個前置攝像頭(大多數Android設備都有)。
一個項目在Android 4.1(Jelly Bean)或更高版本上運行,需要一個後置攝像頭和重力傳感器(大多數Android設備都有)。為了進行開發,需要一臺Windows或macOS機器和價值約的遊戲開發軟件。
有關所有需求庫和工具的安裝說明,以及樹莓派的可選設置說明都將在本書介紹。