Похоже, что я единственный, кто получил эту проблему с Opencv 2.4.3.не может преобразовать из 'cv :: Mat' в 'void *'
http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html следующие коды опубликованы на этом официальном сайте:
Size patternsize(8,6); //interior number of corners
Mat gray = ....; //source image
vector<Point2f> corners; //this will be filled by the detected corners
//CALIB_CB_FAST_CHECK saves a lot of time on images
//that do not contain any chessboard corners
bool patternfound = findChessboardCorners(gray, patternsize, corners,
CALIB_CB_ADAPTIVE_THRESH + CALIB_CB_NORMALIZE_IMAGE
+ CALIB_CB_FAST_CHECK);
if(patternfound)
cornerSubPix(gray, corners, Size(11, 11), Size(-1, -1),
TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 30, 0.1));
drawChessboardCorners(img, patternsize, Mat(corners), patternfound);
gray
является Mat
, и непосредственно используется в качестве void*
Но на моей Visual Studio 2010, он твердил Ошибка
Error 1 error C2664: 'cvFindChessboardCorners' : cannot convert parameter 1 from 'cv::Mat' to 'const void *' 22
И, я попробовал следующее, но по-прежнему такая же ошибка.
static_cast<void*>(gray)
Error 1 error C2440: 'static_cast' : cannot convert from 'cv::Mat' to 'void *' 21
(void*)gray
Error 1 error C2440: 'type cast' : cannot convert from 'cv::Mat' to 'void *' 21
Я использую OpenCV 2.4.3. Пожалуйста помоги.
Спасибо, что помогает. Но почему функция C не принимает акты? – Tiina
Возможно, он скомпилирован с использованием reinterpret_cast (серый). Но проблема в том, что все еще, это не то поведение, которое вы хотите. Интерфейс C * не * предназначен для работы с объектами, сгенерированными с помощью интерфейса C++ OpenCV. 'cv :: Mat' - это способ работы с изображениями на C++ - это часть интерфейса C++. C способом обработки изображений был тип «IplImage *». Это было бы напрямую передано 'void *' без явного приведения в действие, но тогда вы будете использовать интерфейс C OpenCV. Придерживайтесь C++! –
aardvarkk
Спасибо, я думаю, мне стоит больше взглянуть на кастинг. Если у меня будет 15 репутации, я бы поднял пальцы вверх. :) – Tiina