這裡介紹如何在 Ubuntu Linux 中安裝 OpenCV 影像處理與電腦視覺函式庫,並且使用 C/C++ 或 Python 開發 OpenCV 的影像處理與電腦視覺應用程式。
安裝 OpenCV 函式庫
在 Ubuntu Linux 我們可以使用 apt 安裝套件庫中已經編譯好的 OpenCV 函式庫:
sudo apt-get install libopencv-dev python-opencv
libopencv-dev 是 C/C++ 的函式庫,而 python-opencv 則是 Python 的函式庫,可依自己的需求增減。
在 Ubuntu Linux 套件庫中的 OpenCV 版本通常不是最新的,如果需要安裝最新的 OpenCV 版本,可以依照 OpenCV 官方的編譯安裝步驟來安裝,不過對於初學者來說,使用 apt 安裝應該就足夠了。
OpenCV Hello World(C++)
安裝好 OpenCV 之後首先來看一個 C++ 的 hello world 程式碼 DisplayImage.cpp:
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char* argv[]) {
// 檢查是否有指定輸入影像檔案
if ( argc != 2 ) {
printf("usage: DisplayImage.out <Image_Path>n");
return -1;
}
// 讀取影像檔案
Mat image;
image = imread( argv[1], 1 );
// 檢查影像是否正確讀入
if ( !image.data ) {
printf("No image data n");
return -1;
}
// 建立視窗
namedWindow("Display Image", WINDOW_AUTOSIZE);
// 用視窗顯示影像
imshow("Display Image", image);
// 顯示視窗,直到任何鍵盤輸入後才離開
waitKey(0);
return 0;
}
若用 C++ 開發 OpenCV 的程式,官方是建議搭配 CMake 來編譯,而 CMake 的 CMakeLists.txt 設定檔內容如下:
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
在原始碼的目錄中執行以下指令進行編譯:
cmake .
make
編譯完成後,會產生 DisplayImage 這個執行檔,執行時要指定一個圖檔:
./DisplayImage lena.jpg
執行之後,就會建立一個 GUI 視窗,顯示指定的圖檔。

OpenCV Hello World(Python)
這是 OpenCV Python 版本的 hello world 程式碼,原則上 Python 與 C++ 的 OpenCV 函數都有一對一的對應,所以程式碼看起來大同小異:
#-*- coding: utf-8 -*-
import cv2
import sys
# 檢查是否有指定輸入影像檔案
if (len(sys.argv) != 2):
print("usage: " + sys.argv[0] + " <Image_Path>n")
sys.exit(-1);
# 讀取影像檔案
img = cv2.imread(sys.argv[1], cv2.IMREAD_COLOR)
# 建立視窗
cv2.namedWindow("Display Image", cv2.WINDOW_AUTOSIZE);
# 用視窗顯示影像
cv2.imshow('Display Image', img)
# 顯示視窗,直到任何鍵盤輸入後才離開
cv2.waitKey(0)
假設這個 Python 指令稿的檔名為 display_image.py,以 python 執行這個 Python 的指令稿:
python display_image.py lena.jpg
執行畫面也跟 C++ 的版本一樣。

在 Python 中我們也可以使用 Matplotlib 來顯示圖片,Matplotlib 所提供的 GUI 圖形介面有比較多的功能:
#-*- coding: utf-8 -*-
import cv2
import sys
from matplotlib import pyplot as plt
# 檢查是否有指定輸入影像檔案
if (len(sys.argv) != 2):
print("usage: " + sys.argv[0] + " <Image_Path>n")
sys.exit(-1);
# 讀取影像檔案
img = cv2.imread(sys.argv[1], cv2.IMREAD_COLOR)
# 關閉 Matplotlib 的座標軸
plt.axis("off")
# 以 Matplotlib 視窗顯示影像
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()
由於 OpenCV 的 RGB 影像儲存格式與 NumPy 不同,OpenCV 的三種顏色順序是 BGR,在使用 Matplotlib 顯示影像之前,要先轉換為 RGB,否則圖片的顏色在顯示時就會出錯。
以下是使用 Matplotlib 顯示 OpenCV 圖片的畫面:

