c呼叫c opencv c版本開啟相機方法

2021-08-18 02:49:47 字數 1609 閱讀 4667

一、知識要點:

c呼叫c++函式

二、背景:

以前工程使用的是c語言開發且工程比較大,而現在的工程使用的是c++編寫的。前者較大,後者較小。雖然說c++能很好的相容c語言,但是在工程龐大的情況下,將c全部改寫成c++也是相當麻煩的,會出現很多很多的無法解析的外部符號。所以最恰當的方法是寫乙個介面,使得c能呼叫c++。

例如,很多含有大量演算法的工程是使用c編寫的,而目前opencv主要是使用c++,opencv中也有含有c版本的函式,但是可能是由於目前windows作業系統相機驅動不支援的原因(未深究),一般情況下無法開啟相機。必須使用c++才能開啟相機。所以面臨語言相容的問題。

下面是乙個c語言呼叫c++開啟相機的小例子,其中:

(1)、camera.cpp為在c++下對相機和影象進行的操作;

(2)、 libcamera.cpp為c與c++轉換的中間層;

(3)、main.c為在c下呼叫開啟相機。

三、**如下:

(1)、camera.cpp為在c++下對相機和影象進行的操作;

#includeusing namespace cv;

videocapture cap;

mat frame;

//開啟相機

int opencamera(int index)

else }

//讀取

iplimage readframe()

(2)、 libcamera.cpp為c與c++轉換的中間層;

#includeusing namespace cv;

// libcamera.cpp

int add(const int a, const int b);

int opencamera(int index);

iplimage readframe();

#ifdef __cplusplus

extern "c"

int call_cpp_opencamera(int index)

iplimage call_cpp_readframe()

#ifdef __cplusplus

}#endif

(3)、 main.c為在c下呼叫開啟相機。

//  main.c

#include #include #include#include#includeint call_cpp_add(const int a, const int b);

int call_cpp_opencamera(int index);

iplimage call_cpp_readframe();

int main()

else }

getchar();

return 0;

}

四、結果

使用C 版本的gdal庫開啟hdf檔案

最近應同事的請求幫忙研究下使用c 版的gdal 庫讀取hdf 檔案,今天算是有一點成果,特地做一些記錄。首先是編譯c 版的gdal 1.gdal原始碼剖析 三 之 swig 編譯和幫助文件生成 2.windows下編譯 c 可用的 gdal 附帶netcdf 格式支援庫的一點拾遺 不過我沒有遇到安全...

android user版本如何開啟root許可權

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!1 adbd 的root 許可權 我們通常在debug user 版本問題時,或者進行user 版本的monkey test 時都會這個工作,以便debug.如果你想user 版本adb root 許可權預設關閉,而在想開啟時,可以通過工程模式中的...

android user版本如何開啟root許可權

1 adbd 的root 許可權 我們通常在debug user 版本問題時,或者進行user 版本的monkey test 時都會這個工作,以便debug.如果你想user 版本adb root 許可權預設關閉,而在想開啟時,可以通過工程模式中的設定項開啟,那麼請user2root 功能。此功能預...