本篇 ShengYu 來介紹如何在 Ubuntu 下用 C/C++ 寫第一支 OpenCV 的程式,並且最後透過 g++ 指令編譯與執行起來。
第一支 OpenCV 讀取圖片並顯示程式範例說明
第一支 OpenCV 程式就示範如何讀取圖片,並且把圖片顯示出來吧!範例如下,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18// g++ opencv-read-picture.cpp `pkg-config --cflags --libs opencv`
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat image;
image = imread("lena.jpg", IMREAD_COLOR);
namedWindow("view", WINDOW_AUTOSIZE);
imshow("view", image);
waitKey(0);
return 0;
}
在這個範例裡,我們要使用的圖片就是大名鼎鼎的 lena 小姐,
透過 cv::imread
函式將圖片讀取到一個 cv::Mat
裡存放,
再使用 cv::imshow
把這張圖片給顯示出來,最後加上 cv::waitKey
讓程式等待鍵盤輸入才結束程式。
補充說明:cv::namedWindow
是宣告一個視窗,視窗名稱叫做 view
。cv::waitKey
帶入的參數表示程式需要等待 n 毫秒,如果過了 n 毫秒什麼按鍵也沒發生,就會繼續往下執行,帶入 0 表示無限等待。
使用 g++ 指令編譯
使用 g++ 編譯 OpenCV 程式時,g++ 加上 -o
選項是指定輸出的檔名,也就是執行檔的名城,沒有指定的話預設是 a.out,另外這邊還需要帶入 OpenCV header 檔的位置以及最後要連結哪些函式庫,
這邊使用 pkg-config 來方便地取得這些參數,詳細的說明請看這篇 pkg-config 章節。1
g++ opencv-read-picture.cpp -o read-picture `pkg-config --cflags --libs opencv`
執行程式與顯示圖片
執行下列指令就可以將 read-picture 執行檔執行起來,1
./read-picture
另外還需要 lena.jpg 這張圖片,lena.jpg 這張圖片可以在 opencv/samples/data/lena.jpg
下目錄找到,
或者可以從這裡下載,
下圖為最後看到的畫面。
以上就是第一支 OpenCV 程式,接下來看 OpenCV 怎麼寫彩色轉灰階的程式。
OpenCV 圖片彩色轉灰階
OpenCV 圖片彩色轉灰階的範例如下,分為兩種方式,第一種是 imread 讀取彩色圖片進來後利用 cvtColor 將 彩色轉換成灰階,第二種方式則是直接用 imread 將讀片讀取成灰階圖片進來,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23// g++ opencv-rgb-to-gray.cpp `pkg-config --cflags --libs opencv`
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat image;
Mat gray;
// method 1
image = imread("lena.jpg", IMREAD_COLOR);
cvtColor(image, gray, COLOR_BGR2GRAY);
// method 2
//gray = imread("lena.jpg", IMREAD_GRAYSCALE);
imshow("Input", image);
imshow("Result", gray);
waitKey(0);
return 0;
}
編譯與執行指令如下,1
2$ g++ opencv-rgb-to-gray.cpp `pkg-config --cflags --libs opencv`
$ ./a.out
執行結果畫面如下,
接下來我們來看看怎麼用 OpenCV 寫入圖片。
OpenCV 寫入圖片
OpenCV 寫入圖片的範例如下,承上例我們將讀取進來的圖片經過 cvtColor 轉換成灰階圖片後,最後再用 imwrite 將這張灰階圖片寫入儲存下來。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20// g++ opencv-write-picture.cpp `pkg-config --cflags --libs opencv`
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat image;
image = imread("lena.jpg", IMREAD_COLOR);
Mat gray;
cvtColor(image, gray, COLOR_BGR2GRAY);
imshow("view", gray);
imwrite("output.jpg", gray);
waitKey(0);
return 0;
}
編譯與執行指令如下,1
2$ g++ opencv-write-picture.cpp -o write-picture `pkg-config --cflags --libs opencv`
$ ./write-picture
今天就這樣了,往後會在陸續介紹其他常用範例。
以上就是在 Ubuntu 下寫第一支 OpenCV 程式介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!
相關主題
在 Ubuntu 下編譯安裝 OpenCV 4.1.1
在 Ubuntu 下編譯安裝 OpenCV 3.4.7
使用 gcc / g++ 編譯 opencv 程式