OpenCV入門(二)—— 圖片讀寫基本操作

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;
}

顯示結果如下

test3

目錄結構如下

tree
由於生成的可執行文件在build文件夾裏,而使用的圖片在上一級目錄,所以需要使用 …/ 來調用圖片,並且在build文件夾下生成了灰度圖。

發佈了49 篇原創文章 · 獲贊 11 · 訪問量 3066
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章