最近在系統地學習OpenCV,將學習的過程在此做一個記錄,主要以代碼+注釋的方式記錄學習過程。
1.裝載、 顯示和存儲圖像及在圖像上繪圖
#include <opencv2/core/core.hpp>#include <opencv2//highgui/highgui.hpp>#include <iostream>using namespace std;int main(){ cv::Mat image; //創建一個空對象 //這個定義創建了一個尺寸為0×0的圖像。 可以訪問cv::Mat的size屬性來驗證這一點 cout << "This image is " << image.rows << "*" << image.cols << endl; image = cv::imread("C://Users//Administrator//Desktop//lena.jpg");// 讀取輸入圖像 if (image.empty()) // 錯誤處理.如果沒有分配圖像數據,empty方法返回true。 { cout << "ERROR!" << endl; } cv::namedWindow("Original Image");// 定義窗口( 可選) //可以看到, 這個窗口是用名稱來標識的。 我們稍后可以重用這個窗口 //來顯示其他圖像, 也可以用不同的名稱創建多個窗口。 cv::imshow("Original Image", image) ; //因為它是控制臺窗口, 會在main函數結束時關閉, 所以我們增加一 //個額外的highgui函數, 需要用戶鍵入數值才能結束程序: cv::waitKey(0);//0表示永遠地等待按鍵;正數表示等待指定的毫秒數 cv::Mat result; //創建另一個空的圖像 cv::flip(image, result, 1);// 正數表示水平;0表示垂直;負數表示水平和垂直 cv::namedWindow("Output Image"); cv::imshow("Output Image", result); cv::waitKey(0); cv::imwrite("C://Users//Administrator//Desktop//lenaFlip.jpg",result);//保存結果 // 讀入一個圖像文件并轉換為灰度圖像 cv::Mat image_gray = cv::imread("C://Users//Administrator//Desktop//lena.jpg",CV_LOAD_IMAGE_GRAYSCALE); // 讀取圖像, 并轉換為三通道彩色圖像 cv::Mat image_color = cv::imread("C://Users//Administrator//Desktop//lena.jpg", CV_LOAD_IMAGE_COLOR); cout << "image_gray has " << image_gray.channels() << " channels." << endl; cout << "image_color has " << image_color.channels() << " channels." << endl; /*OpenCV還提供了幾個用于在圖像上繪制形狀和寫入文本的函數。 基 本的形狀繪制函數有circle、 ellipse、 line、 rectangle。 這 是一個使用circle函數的例子:*/ cv::circle(image_gray,// 目標圖像 cv::Point(300, 300), // 中心點坐標 100, // 半徑 0, // 顏色( 這里用黑色) 3); // 厚度 cv::putText(image_gray, // 目標圖像 "She is Lena.", // 文本 cv::Point(200, 450), // 文本位置 cv::FONT_HERSHEY_PLAIN, // 字體類型 2.0, // 字體大小 255, // 字體顏色( 這里用白色) 2); // 文本厚度 cv::namedWindow("Drawing on an Image"); cv::imshow("Drawing on an Image", image_gray); cv::waitKey(0); return 0;}運行結果:

新聞熱點
疑難解答