歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> OpenCV基礎篇之讀取顯示圖片

OpenCV基礎篇之讀取顯示圖片

日期:2017/3/1 9:41:19   编辑:Linux編程

程序及分析

/*
* FileName : read.cpp
* Author : xiahouzuoxin @163.com
* Version : v1.0
* Date : Tue 13 May 2014 07:34:25 PM CST
* Brief :
*
* Copyright (C) MICL,USTB
*/
#include <cv.h>
#include <highgui.h>

using namespace cv;
using namespace std;

int main(int argc, char **argv)
{
Mat img;

img = imread(argv[1], 1);

if (argc != 2 || !img.data) {
cout<<"No image data.\n"<<endl;
return -1;
}

namedWindow("Display Image", CV_WINDOW_AUTOSIZE);
imshow("Display Image", img);

waitKey(0);

return 0;
}
1.
包含和,cv.h中包括了OpenCV的核心功能,包括Mat等數據結構,highgui.h主要包含用於圖片顯示的接口。

2.
Mat是OpenCV中特有的矩陣類,Mat.data是數據指針,通過判斷數據指針是否為NULL可以確定是否讀入圖片數據。

3.
namedWindow有兩個參數,其函數原型如下:
CV_EXPORTS_W void namedWindow(const String& winname, int flags=WINDOW_AUTOSIZE);

第一個參數winname是窗口名,是窗口對象的唯一標識,就和人的名字一樣,因此,不能同時有兩個相同名字的窗口!flags設置窗口屬性,缺省參數值為WINDOW_AUTOSIZE=CV_WINDOW_AUTOSIZE=1。

4.
和matlab中的一樣,有木有,第一個參數表示我要在哪個窗口顯示,第二參數表示我要顯示那幅圖像,用腳趾頭想一想,是不是有這兩個參數就能知道在哪顯示什麼了?

5.
還有一個waitKey(int delay=0)表示圖片顯示窗口保留時間,單位為ms,當delay=0時,按下鍵盤上任意按鍵才會關閉圖像顯示的窗口

6.
用於編譯上述程序的Makefile如下:
TARG=read
SRC=read.cpp
LIB=-L/usr/local/lib/
INC=-I/usr/local/include/opencv/
CFLAGS=-g

$(TARG):$(SRC)
g++ -o $@ ${CFLAGS} $(LIB) $(INC) -lopencv_core -lopencv_highgui $^

.PHONY:clean

clean:
-rm $(TARG) -f

我將OpenCV安裝到默認目錄/usr/local下,因此在使用g++編譯時要包含鏈接庫(-L/usr/local/lib/)和頭文件(-I/usr/local/include/opencv/)

注:在OpenCV基礎篇中都使用該格式的Makefile文件,因此後面的例程都可以拷貝後直接使用,只需要修改TARG和SRC參數即可!

效果

--------------------------------------分割線 --------------------------------------

Ubuntu Linux下安裝OpenCV2.4.1所需包 http://www.linuxidc.com/Linux/2012-08/68184.htm

Ubuntu 12.04 安裝 OpenCV2.4.2 http://www.linuxidc.com/Linux/2012-09/70158.htm

CentOS下OpenCV無法讀取視頻文件 http://www.linuxidc.com/Linux/2011-07/39295.htm

Ubuntu 12.04下安裝OpenCV 2.4.5總結 http://www.linuxidc.com/Linux/2013-06/86704.htm

Ubuntu 10.04中安裝OpenCv2.1九步曲 http://www.linuxidc.com/Linux/2010-09/28678.htm

基於QT和OpenCV的人臉識別系統 http://www.linuxidc.com/Linux/2011-11/47806.htm

--------------------------------------分割線 --------------------------------------

Copyright © Linux教程網 All Rights Reserved