CImage與OpenCV相容問題

2021-09-23 23:50:05 字數 1305 閱讀 3850

cimage與opencv相容問題

cimage類和opencv中的某個類衝突,在配置了opencv後,如果建立cimage類,會有如下問題:

error c2872: 'cvvimage' : ambiguous symbol

could be 'c:\program files\opencv\otherlibs\highgui\highgui.h(438) : cvvimage'

or 'd:\program files\visual studio 8\vc\atlmfc\include\atlimage.h(68): atl::cvvimage'

可以考慮修改opencv的**,去掉其中對於cimage的定義。

開啟\opencv\_make\opencv.sln工程

在opencv中,只有兩處用到了cimage的定義,

乙個是highgui.h line 438; 直接把#define注釋掉。

另外一處是image.cpp,line 236 void cimage::drawtohdc。

改為void cvvimage::

然後重新編譯,把掉用opencv cimage的地方改為cvvimage就可以了。有可能有個別工程編不通,如果不是由於修改引起的就沒有問題。

2.直接在 opencv標頭檔案後

#undef cimage #include

opencv 2.0以後的版本

使用opencv   highgui.h中定義的cvvimage類可以很好的實現opencv和windows mfc顯示介面。由於cvvimage實在highgui.h標頭檔案中宣告的,因此如果程式中需要使用,則必須在開頭包含標頭檔案

[cpp]view plain

copy

#include 

cvvimage對應cimage巨集:

[cpp]view plain

copy

#define cimage cvvimage   

注意事項:

1.由於cimage太常見, 很容易造成衝突,因此建議不要使用該巨集(可以直接刪去此巨集定義)。

2.引數中含有hdc(注:一種windows系統下定義的變數型別,用來描述裝置描述表的控制代碼型別)型別的並不能保證移植到其他平台,例如show/drawtohdc等。 

opencv 2.2.0版本中,cvvimage類不見了...為了能夠繼續使用這個類,下面把這個類的源**貼出來,使用的時候將該**加入到工程中便可以使用了。為了方便切換opencv的版本,這裡用到了一些條件編譯巨集,來保證**的靈活性。

**見:

「向前相容」與「向後相容」

向後相容 backwardscompatibility 又稱向下相容 downwardcompatible 是乙個以部件標準為基礎的效能要求,是它最新的標準規範。向後相容的元件既要符合其所屬分類的效能要求,同時也要符合低於其分類的所有效能要求。比如usb2.0規範是可以向後相容版本更低的usb 1....

向上相容與向下相容

向上相容向上相容 upward compatible xi n sh n ji n r n 在較低檔計算機上編寫的程式,可以在同一系列的較高檔計算機上執行,或者在某一平台的較低版本環境中編寫的程式可以在較高版本的環境中執行,都稱為向上相容,前者是硬體相容,而後者是軟體相容,例如,基於intel386...

CardView使用與相容

1.5.0版本 2.細節 margin與陰影 5.0 4.4因為陰影比較大,所以需要設定android layout margin 0dp 減小陰影 3.按壓下沉,陰影加重效果 5.0以上才有 4.4需要自己自定義 5.0上面需要設定這個,不然裡面textview會貼到圓角上 圖1 圖2 圖34.4...