c调用c++:opencv c版本打开相机方法
生活随笔
收集整理的這篇文章主要介紹了
c调用c++:opencv c版本打开相机方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、知識要點:
? ? ? ? c調(diào)用c++函數(shù)二、背景:
? ? 以前工程使用的是c語言開發(fā)且工程比較大,而現(xiàn)在的工程使用的是C++編寫的。前者較大,后者較小。雖然說C++能很好的兼容c語言,但是在工程龐大的情況下,將C全部改寫成C++也是相當(dāng)麻煩的,會出現(xiàn)很多很多的無法解析的外部符號。所以最恰當(dāng)?shù)姆椒ㄊ菍懸粋€接口,使得C能調(diào)用C++。 例如,很多含有大量算法的工程是使用c編寫的,而目前opencv主要是使用C++,opencv中也有含有c版本的函數(shù),但是可能是由于目前windows操作系統(tǒng)相機(jī)驅(qū)動不支持的原因(未深究),一般情況下無法打開相機(jī)。必須使用c++才能打開相機(jī)。所以面臨語言兼容的問題。 下面是一個c語言調(diào)用c++打開相機(jī)的小例子,其中: (1)、Camera.cpp為在c++下對相機(jī)和圖像進(jìn)行的操作; (2)、 libcamera.cpp為c與c++轉(zhuǎn)換的中間層; (3)、main.c為在c下調(diào)用打開相機(jī)。三、代碼如下:
(1)、Camera.cpp為在c++下對相機(jī)和圖像進(jìn)行的操作; //camera.cpp #include<opencv.hpp>using namespace cv;VideoCapture cap; Mat frame;//打開相機(jī) int OpenCamera(int index) {cap.open(index);if (cap.isOpened()){return true;}else{return false;} }//讀取圖片 IplImage ReadFrame() {IplImage img;cap >> frame;//img(frame);img = IplImage(frame);return img; } (2)、 libcamera.cpp為c與c++轉(zhuǎn)換的中間層; #include<opencv.hpp>using namespace cv;// libcamera.cpp int add(const int a, const int b);int OpenCamera(int index);IplImage ReadFrame();#ifdef __cplusplus extern "C" { #endifint call_cpp_add(const int a, const int b){return add(a, b);}int call_cpp_OpenCamera(int index){return OpenCamera(index);}IplImage call_cpp_ReadFrame(){return ReadFrame();}#ifdef __cplusplus } #endif(3)、?main.c為在c下調(diào)用打開相機(jī)。// main.c #include <stdio.h> #include <stdlib.h> #include<cv.h> #include<highgui.h> #include<cxcore.h>int call_cpp_add(const int a, const int b);int call_cpp_OpenCamera(int index);IplImage call_cpp_ReadFrame();int main() {//printf("%d\n", call_cpp_add(2, 4));IplImage frame;//打開相機(jī)if (!call_cpp_OpenCamera(0)){printf("Camera open failed!\n");printf("end------!\n");}else{printf("Camera open success!\n");while (1){frame = call_cpp_ReadFrame();cvShowImage("Img", &frame);cvWaitKey(20);}}getchar();return 0; }
四、結(jié)果
總結(jié)
以上是生活随笔為你收集整理的c调用c++:opencv c版本打开相机方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华科大计算机系李瑞轩.,李瑞轩-智能与分
- 下一篇: S32K-LPSPI中文手册