OpenCV學習筆記
基本函數的使用
1.imread()函數 用於讀取圖像,這個函數打開圖像,並以矩陣格式存儲圖像。
該函數接受兩個參數,第一個參數是該圖片的路徑(用字符串表示),也可以是main函數中的argv參數;
第二個參數默認情況下是可選的,主要用於設定圖片格式,其選項有:
- CV_LOAD_IMAGE_ANYDEPTH(flag=2):當輸入具有相應的深度時返回一個16位或32位圖像,否則將圖像轉換爲8位圖像。
- CV_LOAD_IMAGE_COLOR(flag=1):將圖像轉換爲彩色圖像。
- CV_LOAD_IMAGE_GRAYSCALE(flag=0):將圖像轉換爲灰度圖。
2.imwrite()函數 用於存儲矩陣圖像。
該函數接受三個參數,第一個參數是帶有所需擴展格式的圖像保存路徑;第二個參數是保存矩陣圖像的格式。第三個參數是特定保存格式的參數編碼,默認值是:std::vector()。
而第三個參數有三種類型:
- CV_IMWRITE_JPEG_QUALITY:它代表的是jpeg格式的圖片,它的值從0到100,默認爲95,並且值越小,圖片壓縮的越多。
- CV_IMWRITE_PNG_COMPRESSION:它代表的是png格式的圖片,它的值從0到9,默認爲3,並且值越大,圖片尺寸越小。
3.namedWindow()函數 用於創建窗口。
該函數接受兩個參數,第一個參數用於定義窗口標題,第二個參數爲窗口的格式設置。其中默認爲CV_WINDOW_AUTOSIZE(flag=1),即適應顯示的圖像而不能改變窗口的大小。
於是我們可以使用CV_WINDOW_NORMAL (flag=0) 來定義窗口,我們便可以改變窗口的大小。然後也可以配合使用resizeWindow("[name]",X,Y)函數來定義一個X×Y的窗口。
4.imshow()函數 用於顯示圖像。
該函數接受兩個參數,其中第一個參數是定義標題(或是對應窗口標題),第二個參數是圖像矩陣。
5.waitKey()函數 用於進程的等待,接受一個參數用於表示進程等待的時間。
6.訪問一個圖像的像素可以使用 .cols和 .rows屬性,用以訪問圖像的列數和行數。
具體代碼如下
#CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(test3)
set( CMAKE_CXX_FLAGS "-std=c++11" )
find_package(OpenCV 3 REQUIRED)
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( test3 test3.cpp )
target_link_libraries(test3 ${OpenCV_LIBS})
//test3.cpp
#include<iostream>
#include<string>
#include<vector>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main(int argc,char **argv)
{
Mat image_color = imread("../maomi3.jpeg");
Mat image_gray = imread("../maomi3.jpeg",0);
//write the image
imwrite("maomi_gray.jpeg",image_gray);
int row = image_color.rows-1;
int col = image_color.cols-1;
Vec3b pixel = image_color.at<Vec3b>(row,col);
cout<<"row: "<<row<<" , "<<"col: "<<col<<endl;
cout<<"Pixel value (B, G, R) :("<<(int)pixel[0]<<","<<(int)pixel[1]<<","<<(int)pixel[2]<<")"<<endl;
//show the image
namedWindow("color_image",0);
resizeWindow("color_image",640,480);
imshow("color_image",image_color);
namedWindow("gray_image",CV_WINDOW_NORMAL);
imshow("gray_image",image_gray);
waitKey(0);
return 0;
}
顯示結果如下
目錄結構如下
由於生成的可執行文件在build文件夾裏,而使用的圖片在上一級目錄,所以需要使用 …/ 來調用圖片,並且在build文件夾下生成了灰度圖。