
打開任何一本電腦視覺教科書、隨便點開一篇 GitHub 上的 CV 專案,你很可能會看到那一行熟悉的 import cv2。這個 cv2 背後是一個叫做 OpenCV 的開源函式庫——我們現在覺得它就跟空氣一樣理所當然,但它走到今天,其實非常曲折。
它一開始不是一個正經的學術計畫,也不是某個天才博士論文的副產品。它是 Intel 內部一個拉抬 CPU 銷量的「公關專案」,差點在 dot-com 泡沫崩潰時無聲消失,後來經歷三次組織轉手,才在 2026 年 6 月迎來八年來最大一次改版:OpenCV 5.0 直接把 LLM 與 VLM 塞進這個函式庫裡面。
這篇就來講這個故事——不講太多技術,主要講人、講組織、講為什麼一個函式庫可以撐 26 年還越長越壯。
故事的起點:一個叫 Gary Bradski 的人
要講 OpenCV,就一定要從 Gary Bradski 講起。1990 年代末,他在 Intel 的 Microprocessor Research Lab 工作,當時 Intel 一直在找方法讓自家 CPU「賣得出去」——你 CPU 越強,總得有東西可以拿來算吧?所以 Intel 開了一堆「拉抬 CPU 運算密集應用」的計畫,包括即時光線追蹤、3D 顯示牆等等。
Bradski 那時去拜訪了 MIT Media Lab、CMU、史丹佛這些頂尖學校的視覺實驗室,他注意到一件很有趣的事——每個學校的研究生都把學長姊寫過的 CV 程式碼當作起點,互相傳承、從來不必從零造輪子。可是這種「內部福利」外面拿不到。
於是他和一群 Intel Russia 的最佳化專家、Intel Performance Library 團隊一起,把這套「共享 CV 程式碼」的概念變成一個對外開源的函式庫。Bradski 自己在受訪時這樣描述目標:
我們希望降低電腦視覺的入門門檻,把它民主化,讓任何人都可以把 machine perception 用在自己的專案裡。
他這段話講得很 Silicon Valley、很官腔,但骨子裡 Intel 的算盤其實也很直白:有更多人寫 CV 應用,就有更多人需要強的 CPU。商業誘因和理想主義在這個案子上剛好對齊。
1999–2008:漫長的 Beta 與差點消失的十年
OpenCV 的第一個 alpha 版在 1999 年 1 月內部釋出,那時候只支援 Windows、用 C 語言寫的、介面就是現在被吐槽的 IplImage 那一套。Wikipedia 上的 OpenCV 條目 寫得很清楚:對外正式亮相是 2000 年 6 月的 IEEE CVPR 大會。
然後它就進入了一段很漫長的 beta 期——2001 到 2005 連續發了五個 beta 版,1.0 正式版要等到 2006 年才釋出。為什麼這麼慢?因為 dot-com 泡沫破了,Intel 內部裁員、轉向,這個專案有好一段時間連一個全職人員都沒有。
Bradski 自己後來回憶(這段在他 2014 年的 OpenCV 3.0 投影片 裡有提到):「1999 年初平均有 7 個人在做,2003 年 Intel 的正式支援下降到接近零,Willow Garage 接手前的幾年內部幾乎沒人在管。」聽起來夭壽。
那段空窗期 OpenCV 之所以還能持續發 beta,靠的不是 Intel 員工,而是一群俄羅斯工程師——Vadim Pisarevsky、Victor Eruhimov、Sergey Molinov、Alexander Shishkov。他們以開源志工的身份在外部維持核心開發,後來這幫人乾脆自己跑出來開了一家叫 Itseez 的公司,把 OpenCV 從志工模式轉成商業支援模式。這段故事很少被講,但這群俄羅斯人才是 OpenCV 沒死的原因。

三次組織轉手:從 Intel 到 Willow Garage,再回到 Intel
OpenCV 的歷史不只是程式碼演進史,它的「組織歸屬」變過好幾次,而每一次轉手都讓它走向不同的方向。
| 時期 | 主導組織 | 影響 |
|---|---|---|
| 1999–2008 | Intel Research | 起源、C API、Windows-only |
| 2008–2012 | Willow Garage | 機器人優先,順便讓它跨平台 |
| 2012 起 | OpenCV.org 基金會 | Bradski 與 Vincent Rabaud 共同創立 |
| 2012–2016 | Itseez | 商業支援俄羅斯團隊接手核心 |
| 2016/5/25 起 | Intel 收購 Itseez | OpenCV 回到 Intel 體系 |
Willow Garage 那段特別關鍵。這家公司是矽谷做機器人的傳奇——同時維護 ROS(Robot Operating System) 、PCL(Point Cloud Library),以及 OpenCV 與 Willow Garage 的歷史關聯 。他們把 OpenCV 從一個「Windows 上的 Intel 函式庫」改造成真正跨平台的工具。Bradski 後來離開 Willow 自己創了 Industrial Perception(2013 年被 Google 收購),但 OpenCV 留在了基金會手裡。
2012 年 8 月 是另一個分水嶺——非營利的 OpenCV.org 基金會成立,Bradski 和 Vincent Rabaud(當時還在 Willow Garage 當研究工程師)一起主持。從這天起,OpenCV 真正脫離單一公司的控制,變成社群擁有的開源資產。
四年後,2016 年 5 月 25 日,Intel 又把 Itseez 收購回來——某種程度上像是「回娘家」。但 OpenCV.org 基金會仍然獨立運作,所以這次收購對開發節奏沒造成什麼震盪,反而讓 Intel 在硬體優化上資源更直接。
程式碼面的世代分水嶺
組織講完,講一下程式碼面那幾次真正重要的「世代交替」。我不會講細節,但你要知道有這幾個時間點:
- 2009 年 10 月,OpenCV 2.0:從 C 介面切到 C++ 介面,引入
cv::Mat,自動記憶體管理、告別手動cvRelease*()地獄。寫過 1.x 的人會懂這有多解脫。 - 2015 年的 3.0、2017 年的 3.3:DNN(深度學習)模組從 contrib 升到主 repo,OpenCV 第一次正式承認「我不再只是傳統 CV」。
- 2018 年 11 月,OpenCV 4.0:移除大量舊 C API、預設 C++11、
cv::Ptr改成std::shared_ptr的薄包裝。這是「拆技術債」的第一次大手術。 - 2026 年 6 月,OpenCV 5.0:8 年來最大改版,DNN 引擎全部重寫、ONNX 操作覆蓋率從 ~22% 提升到 80%+、內建 tokenizer 與 KV-cache 直接跑 LLM/VLM、徹底拋棄 legacy C API、C++17 變成最低標準。整個社群在 Hacker News 與 Phoronix 上熱烈討論了好幾天,份量等同當年 2.0 引入 C++、4.0 拆掉 C API 的世代分水嶺。
5.0 這次的衝擊力,業界討論最多的是兩件事:第一,OpenCV 變成可以直接跑 Qwen 2.5、Gemma 3、PaliGemma 等多模態模型的工具;第二,任何還在用 OpenCV 1.x C API 的舊專案,5.0 連編都編不過——必須留在 4.x 線上,或者咬牙改寫。
詳細的技術內容我會另外寫一篇深度文章去拆,這篇先按下不表。
為什麼一個 26 歲的函式庫還沒死?
這才是這篇真正想問的問題。我們這行的工具淘汰速度誇張到不行——React 18 出來才幾年大家又在罵框架太多了,但 OpenCV 從 1999 撐到 2026 還越長越壯,為什麼?
我覺得答案要從底層問題開始講起。OpenCV 解的東西——讀檔、色彩空間轉換、幾何變換、形態學、輪廓、邊緣、特徵——這些 1999 年是這樣,2026 年還是這樣。沒人會發明新的「灰階轉換」。當別的庫拼命追潮流時,OpenCV 守住的是「水電」級的需求。
而它真正能穿越週期的關鍵,在於它一直緊貼著硬體節奏走。從 Intel 的 MMX/SSE/AVX,到 NVIDIA 的 CUDA、ARM 的 NEON、Apple Silicon、RISC-V 的 RVV 1.0,每一波新指令集 OpenCV 都會跟上。這也是 Intel 願意花錢收 Itseez 的真正理由——它就是 Intel CPU 在 CV 領域的「行銷展示櫃」。商業誘因和技術理想再一次重合。
教學資源這層更是新工具兩三年內追不上的護城河。PyImageSearch 、LearnOpenCV 、Bradski 本人寫的 Learning OpenCV——這些教材累積了 20 年。新人進來,只要 Google「OpenCV + 我想做的事」幾乎一定有現成教學跑。這種文化資產,光是「快」是買不到的。
最後一點我自己最佩服——5.0 證明它願意自我革命。一個函式庫敢在 4.x 已經很穩定的情況下,砍掉 C API、把 DNN 整個重寫、把 LLM 也納進來,這在開源世界並不常見。很多老專案最後死於「不敢改」,OpenCV 用 5.0 告訴大家它不在那個名單裡。

結語:歷史的重量會變成新人的福氣
我自己第一次裝 OpenCV 大概是 2018 年,那時候只是想做一個 Webcam 人臉偵測的玩具,根本沒在管背後這 19 年發生過什麼事。後來開始追新版本變化,才發現這個函式庫的故事比技術本身還精彩——一個專案能熬過 dot-com 崩盤、熬過三次組織轉手、又熬過深度學習對傳統 CV 的「降維打擊」,每一次都換了一張皮繼續活下來。
對 2026 年才開始學電腦視覺的人來說,OpenCV 26 年累積的歷史重量其實是禮物。所有可能踩的坑前人都踩過了,所有可能寫的範例 GitHub 上都有,連 OpenCV University 也有完整的官方課程。你只要願意動手,剩下的就是時間問題。
接下來的第二篇會帶你用幾十行 Python 跑完三個遞進的 CV 範例;第三篇則深拆 OpenCV 5.0 為什麼是世代分水嶺。沒碰過 CV 的人從第二篇開始最舒服;想看技術細節就直接跳到第三篇。
延伸閱讀
- OpenCV 5 release page —— 官方對 5.0 的整體介紹
- OpenCV Wikipedia entry —— 完整時間線與組織變遷
- Bradski & Kaehler, Learning OpenCV (PDF) —— 起源故事的第一手敘述
- OpenCV 3.0 Uses in Robotics and AR (Bradski 2014 投影片) —— OpenCV 早期演進
- Anniversary - OpenCV —— 官方 20 週年紀念文
- Intel acquires Itseez (2016) —— Itseez 回到 Intel 體系
- Willow Garage - Wikipedia —— 機器人實驗室與 OpenCV 的關係
沒有留言:
張貼留言