opencv中c版本和c 版本區別體驗

2021-07-29 08:24:34 字數 2032 閱讀 4524

在c版本中,定義乙個視窗時用cvnamedwindow.

比如說cvnamedwindow(「src」,0);後面的引數為0表示視窗大小可以手動改變,否則視窗的大小是自適應大小的。

而在c++版本中定義乙個視窗用namedwindow.

比如說namedwindow(「src」,1);不管後面第二個引數是多少,都不能手動更改視窗的大小,因為它的尺寸是根據大小自動生成的。

並且要看到手動調整視窗大小的效果,還需要配合cvshowimage(「src」,img);

也就是說如果後面顯示用c++版本的imshow(「src」,img);也是看不到手動調整大小的效果的。

在opencv的c版本中,顯示用cvshowimage;

比如說,cvshowimage(「src」,img);

並且這裡的img是iplimage*型別,所以如果你定義的img是mat型別的話就用不了,因為程式不能自動將mat型別轉換成iplimage*型別。

在opencv的c++版本中,顯示用的是imshow;

比如說,imshow(「src」,img);

當然這裡的img就是mat型別了。也就是說如果這裡的img用iplimage*就不行了,程式不能自動將iplimage*轉換成mat型別。

通過上面2點應該注意到,如果要手動改變的尺寸,就必須cvnamedwidow(「src」,0);

cvshowimage(「src」,img)一起用。其中img是iplimage*型別。

當然cvnamedwindow(「src」,0)也可以和imshow(「src」,img)一起用,其中img是mat型別,但是這樣達不到自動改變視窗大小的目的。

因為一般情況下,namedwindow(「src」,1)和imshow(「src」,img)一起用的。

[cpp]view plain

copy

下面來看看iplimage結構體內部:  

intnsize  

intid  

intnchannels  

intalphachannel  

intdepth  

char

colormodel [4]  

char

channelseq [4]  

intdataorder  

intorigin  

intalign  

intwidth  

intheight  

struct

_iplroi * roi  

struct

_iplimage * maskroi  

void

* imageid  

struct

_ipltileinfo * tileinfo  

intimagesize  

char

* imagedata  

intwidthstep  

intbordermode [4]  

intborderconst [4]  

char

* imagedataorigin  

而mat結構體包含乙個mat頭部(頭部中記錄的是矩陣的大小,儲存方式等等)和乙個指向矩陣的指標。所以2者還是有很大區別的,所以說程式不能自動將他們轉換是有原因的,因為mat結構更加複雜。

在c版本中讀取用的是cvloadimage;

比如說cvloadimage(「lena.jpg」);

在c++版本中,讀取用的是imread;

比如說imread(「lena.jpg」);

當然這2種的lena都是放入工程目錄下的。

但是這裡有一點非常不同的是,cvloadimage()中的引數為const char*型別,而imread()中的引數是const &string型,這兩種是完全不同的,在opencv中也不能自動轉換好他們,混合使用c和c++函式一起編寫opencv**時要小心。

在c版本中路徑之間用2個雙右斜線,即」\\」。用1個斜線」\」會報錯。

在c++版本中路徑之間用1個或者2個甚至更多個斜線都是可以的。

OpenCV學習記錄(C 版本)

影象的載入 imread 函式 mat imread const string filename,int flag 1 其中flag 1代表讀入rgb彩色影象,1表示讀取原始影象,0表示讀取灰度圖 todo 影象的顯示 imshow 函式 改變視窗大小 imshow時改變視窗大小,screensho...

c 中的Debug版本和Release版本的區別

今天看visual c 2012 入門經典,書上描述 debug版本包括幫助使用者除錯程式的資訊,使用程式的debug版本,可以在出現問題時單步執行 以檢查程式中的資料值。release版本它不包括除錯資訊,但開啟了編譯器的 優化選項,以提供最高效的可執行模組。在使用除錯配置測試過應用程式,且看起來...

C 中的版本說明

assembly assemblyversion 1.1.assembly assemblyfileversion 1.0.0.0 assembly assemblyinformationalversion 1.2.1.0 用來定義 product version assemblyversion 儲...