OpenCV成長之路(1):影象的讀寫與顯示

發表於2015-02-10

一、工具篇

工欲善其事,必先利其器。學習OpenCV,肯定少不於基本的程式設計工具與OpenCV庫。在Windows平臺下你可以選擇Visual Studio、CodeBlock等,當然你也可以選擇在Linux平臺,用VI、codeBlock都是可以的。程式設計平臺的選擇看個人愛好以及專案的開發環境。然後是OpenCV庫,你可以在這裡下載到最新的版本:http://opencv.org/,最近的版本已經到了2.4.7,但是OpenCV2.0以上版本差別都不算太大。關於怎麼安裝OpenCV,本文就不再詳說了,此類教程實在太多,百度一下類似:VS2012+openCV2.4.6應該能找到你想要的結果。

二、第一個OpenCV程式

相比於“第一個C語言程式”或者“第一個Java程式”都以Hello,World!這種俗套的例程,我們的第一個OpenCV來顯示一幅自己喜歡的影象。

關於上面的程式有以下幾點要說明:

  • 1,core.hpp於OpenCV的一些基礎資料結構相關,highgui.hpp和openCV的一些介面相關,如顯示影象的視窗。
  • 2,Mat是OpenCV裡最基本的一個類,它用來表示影象。
  • 3,imshow是用來顯示影象的函式,它的C++介面是:

第一引數是視窗名,第二個引數是要顯示的影象。

4,與OpenCV相關於類或者函式都在CV名稱空間裡。

5,想讓上面程式正確顯示出你的影象,請把影象放在正確的路徑,或者直接寫絕對路徑。

上面程式中已經用到了影象的讀入函式imread、影象的顯示函式imshow,那麼影象的寫入函式imwrite就不會顯示陌生了。

它的第一個引數是寫影象的路徑,第二個引數是要寫入的影象。

三、建立一個影象

在我們的第一個OpenCV程式中,用Mat來宣告瞭一個影象,宣告後影象的大上為0*0的,當然我們也可以初始化一個固定大小的影象。

上面的程式碼建立了一個灰度影象,大小是320*240,影象上每個點的資料型別是無符號8位的,並用100填充所有畫素點。
你可以把CV_8U換成CV_8U3來建立一個三通道的彩色影象。或者用CV_16U建立無符號16位的。

四、賦值與複製

如果我們想得到一個影象的副本並進行了下面的操作。

如果我們對newImage進行修改或操作,則會直接影響Image影象,因為newImage與Image共用了資料內容。

想要真正得到一個副本可以這樣做:

很多時候,我們並不想得到原影象的複製,但是要建立一個跟原影象大小相同的影象。下面的程式碼可以完成這樣的功能。

相關文章