我还想知道是否有可能将 OpenCV 的 C++ 接口包装在 C 中,然后将其包装在 Lisp 中,这样我就可以将所有 C++ 功能也添加到我的 cl-opencv 包装器中,因为我想让它完整....也想知道如果我这样做,我可以在 lisp 中使用 C++ 包装器和 C 包装器吗......一起......就像使用 cv::namedWindow 而不是 cvNamedWindow 而所有其他部分都是 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 遇到障碍有些地方甚至是不可能的......而且还会将它包裹两次使其变慢吗?并且 id 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;
仍然得到上述错误