Visual studio 2010 无法从';cv::Mat';至';void*';
似乎我是唯一一个在Opencv 2.4.3中遇到这个问题的人 以下代码发布在该官方网站上:Visual studio 2010 无法从';cv::Mat';至';void*';,visual-studio-2010,opencv,Visual Studio 2010,Opencv,似乎我是唯一一个在Opencv 2.4.3中遇到这个问题的人 以下代码发布在该官方网站上: 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
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);
并且,我尝试了以下方法,但仍然是相同的错误
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
static\u cast(灰色)
错误1错误C2440:“静态_转换”:无法从“cv::Mat”转换为“void*”21
(空白*)灰色
错误1错误C2440:“类型转换”:无法从“cv::Mat”转换为“void*”21
我正在使用OpenCV 2.4.3。请帮忙。 < p> OpenCV文档中的示例代码使用C++接口(<代码> FiffChess BooDurks)。您正在调用C接口(
cvFindChessboardCorners
)。如果你有可能使用C++接口,我强烈推荐它。我认为你应该能够使用C++接口,因为如果你的代码编译成C,我不认为它会抱怨一个空的指针(虽然我可能错了!)
注意:根据名称空间的不同,您可能需要如下方式调用函数:
cv::findChessboardCorners
您应该能够直接传递您的
灰色
对象而无需任何施法。谢谢,这很有帮助。但是为什么C函数不接受任何强制转换呢?它可能是使用reinterpret_cast(灰色)编译的。但问题是,即使如此,这也不是你想要的行为。C接口不是用来处理OpenCV的C++接口生成的对象。代码>:CMA: < /Cord>是处理图像的C++方式——它是C++接口的一部分。处理图像的C方式是IplImage*
类型。这将直接强制转换到void*
,而不需要显式强制转换,但是您将使用OpenCV的C接口。坚持C++!谢谢,我想我应该多看看演员的情况。如果我有15个名声,我会竖起大拇指。:)
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