Я использую opencv с визуальным Studio 2010 приложение формы окна c++. но он не позволит вызывать встроенные функции. Это дает ошибки, такие как
Ошибка 1 ошибка C3861: 'cvCvtColor': идентификатор не найден c:\users\ayesha\документы\visual studio 2010\projects\abc\abc\Form1.h 140 1 abc
Ошибка 2 ошибки C3861: 'cvCvtPixToPlane': идентификатор не найден c:\users\ayesha\documents\visual studio 2010\projects\abc\abc\Form1.h 146 1 abc
Я добавил следующие заголовки
#include "highgui.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно.
К сожалению, OP не говорит, какую версию OpenCV он использует.
Во время работы с OpenCV 3.0 используйте cvSplit()
вместо cvCvtPixToPlane()
.
cvCvtColor()
должен работать с OpenCV 3.0, если вы добавили необходимые файлы заголовков в свои проекты.
Наконец, чтобы убедиться, что вы не пропустите необходимые файлы в своем проекте, просто запустите свой код с помощью #include <opencv2\opencv.hpp>
.
Ошибка, о которой вы упомянули, является ошибкой компоновщика, я полагаю. Поскольку вы включаете два заголовка highgui.hpp и highgui.h, нацеливаются на идентичную библиотеку, которая является opencv_highgui23 #. Просто включите только один заголовок.
cvCvtColor
- это функция C API OpenCV, но вы намерены использовать C++. У вас есть два способа решения проблемы:
1) (рекомендуется) Измените исходный код на использование API C++. Вы должны использовать cv::Mat
вместо CvArr
, cv::cvtColor
вместо cvCvtColor
и т.д.
2) Поскольку такие изменения в исходном коде могут быть довольно привлекательными, вы все равно можете использовать C API, включив C-заголовки
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/core/core_c.h"
#include "opencv2/highgui/highgui_c.h"
вместо C++ (*.hpp)