また、OpenCV の C++ インターフェイスを C でラップし、それを Lisp でラップして、cl-opencv ラッパーにすべての C++ 機能を追加できるようにする可能性についても考えていました。私がそれを行う場合、C++ラッパーをlispのCラッパーと一緒に使用できますか....可能であれば、開いているウィンドウのような簡単なサンプルプログラムを見せて、cとc++でのみpicture関数を表示できますか?一緒に.... cvNamedWindow の代わりに cv::namedWindow を使用し、他のすべての部分が c であるように .....これが私の試みであり、cv::namedWindow のみを使用すると以下のプログラムが実行されますが、失敗します
shape.cpp:37:32: error: invalid initialization of
reference of type ‘cv::InputArray {aka const cv::_InputArray&}’
from expression of type ‘IplImage* {aka _IplImage*}’In file included from
/usr/local/include/opencv/highgui.h:48:0,
from shape.cpp:4:
/usr/local/include/opencv2/highgui/highgui.hpp:78:19: error:
in passing argument 2 of ‘void cv::imshow(const string&, cv::InputArray)’
Compilation exited abnormally with code 1 at Thu Sep 26 21:18:00
cv::imshow を追加すると
#include <cv.h>
#include <highgui.h>
using namespace std;
int main(){
CvCapture* capture =0;
capture = cvCaptureFromCAM(0);
if(!capture){
printf("Capture failure\n");
return -1;
}
IplImage* frame=0;
cv::namedWindow("Video");
// cout << "colorModel = " << endl << " " << size << endl << endl;
while(true){
frame = cvQueryFrame(capture);
if(!frame) break;
frame=cvCloneImage(frame);
cv::imshow("Video", frame );
cvReleaseImage(&frame);
//Wait 50mS
int c = cvWaitKey(10);
//If 'ESC' is pressed, break the loop
if((char)c==27 ) break;
}
cvDestroyAllWindows() ;
cvReleaseCapture(&capture);
return 0;
}
それが実行可能かどうか知りたいです...開始する前に100%確信しているように、少なくともすべてのc ++関数をcでラップし、それをlispでラップすることができます..または、idが障害に遭遇すると思われる場合いくつかの場所または不可能性さえあります...また、それを2回ラップすると遅くなりますか? そして、CインターフェースをC ++よりも優れている/劣っていることを確認します..または、C ++でできることをCインターフェースですべて達成できますか
swig と cffi のドキュメントでは、C++ のサポートは完全ではないと書かれているため、これを尋ねます。
そうそう、私もこれらすべてのヘッダーで上記のコードを実行しようとしました
#include <cv.h>
#include <highgui.h>
#include "opencv2/highgui/highgui.hpp"
#include <iostream>
using namespace cv;
using namespace std;
それでも上記のエラーが発生します