Я новичок в openCV, и, наконец, я получил его, чтобы открыть окно и показать выход веб-камеры. Теперь я пытаюсь преобразовать рамки в оттенки серого, прежде чем отображать их. К сожалению, каждый раз, когда я пытаюсь скомпилировать, я получаю следующую ошибку. error: ‘cvCvtColor’ was not declared in this scope
Я использую следующую строку для компиляцииOpenCV cvCvtColor не связан?
г ++ main.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect -o камера
Могу ли я связывая мой код неправильно? Вот полный список кодов. Извините за мои проблемы с форматированием!
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/core.hpp"
#include <stdio.h>
#include <unistd.h>
IplImage* getCameraFrame(CvCapture* &camera)
{
IplImage *frame;
int w, h;
// If the camera hasn't been initialized, then open it.
if (!camera) {
printf("Acessing the camera ...\n");
camera = cvCreateCameraCapture(0);
if (!camera) {
printf("Couldn't access the camera.\n");
exit(1);
}
// Try to set the camera resolution to 320 x 240.
cvSetCaptureProperty(camera, CV_CAP_PROP_FRAME_WIDTH, 320);
cvSetCaptureProperty(camera, CV_CAP_PROP_FRAME_HEIGHT, 240);
// Get the first frame, to make sure the camera is initialized.
frame = cvQueryFrame(camera);
if (frame) {
w = frame->width;
h = frame->height;
printf("Got the camera at %dx%d resolution.\n", w, h);
}
// Wait a little, so that the camera can auto-adjust its brightness.
sleep(1); // (in milliseconds)
}
// Wait until the next camera frame is ready, then grab it.
frame = cvQueryFrame(camera);
if (!frame) {
printf("Couldn't grab a camera frame.\n");
exit(1);
}
return frame;
}
int main(int argc, char* argv[])
{
cvNamedWindow("Example2", CV_WINDOW_AUTOSIZE);
CvCapture* capture = cvCreateCameraCapture(0);
IplImage* frame;
while(1) {
frame = cvQueryFrame(capture);
if(!frame) break;
cvCvtColor(frame, frame, CV_RGB2GRAY);
cvShowImage("Example2", frame);
char c = cvWaitKey(33);
if(c == 27) break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("Example2");
return 0;
}
Ошибка, которую вы получаете, не является ошибкой компоновщика. Это ошибка компилятора. – ypnos
Попробуйте использовать ** Mat ** вместо ** IplImage **. Также используйте эквивалентные функции ** C++ ** (т. Е. _cvtColor_ вместо _cvCvtColor_). – asif