Я делаю простую программу для веб-камеры с использованием OpenCV 2.3 и застрял из-за ошибки компиляции.Любая идея будет оценена.
После компиляции я получаю следующую ошибку при imwrite (в функции чтения в коде ниже).
Этот пример , который использует imwrite длясохранить изображение работает в моей среде, что означает, что imwrite в OpenCV 2.3 должен работать на моем env.
ошибка:
error: invalid initialization of reference of type ‘const cv::_InputArray&’ from expression of type ‘cv::Mat*’
/usr/local/include/opencv2/highgui/highgui.hpp:110: error: in passing argument 2 of ‘bool cv::imwrite(const std::string&, const cv::_InputArray&, const std::vector<int, std::allocator<int> >&)’
выдержка из кода:
#include <iostream>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace std;
using namespace cv;
//IplImage* SampleClassA::dispImg = NULL;
Mat* SampleClassA::dispImg = NULL;
int read()
{
Mat* sharedImg;
sharedImg = getFrame();
if (sharedImg)
{
if (dispImg == NULL)
{
SampleClassA::dispImg = sharedImg;
}
Mat outMat;
outMat = imwrite("./out/sample.jpg", sharedImg);
}
sleep(100);
return 1;
}
Mat* getFrame()
//IplImage* ReadRealTime::getFrame()
{
if (!capture.isOpened()) // Actual capturing part is omitted here.
{
return NULL;
}
Mat frame;
capture >> frame;
return &frame;
}
</code>
Кстати, Я запутался, принимает ли imwrite 2 аргумента или 3. И следующая ссылка, и файл highgui.hpp на моей машине говорят 3 аргумента, но в приведенном выше примере кода ( из ros.org ) используется только 2(потому что я делаю то же самое)http://opencv.itseez.com/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=imwrite#imwrite
пс.Прости, что я разместил здесь тот же вопрос с тем, который я отправил на OpenCV@yahoogroups.com, если вы подписываетесь на него.Я сделал это потому, что этот сайт кажется более интерактивным и удобным для различных целей.