gpt4 book ai didi

visual-studio-2010 - 无法从 'cv::Mat' 转换为 'void *'

转载 作者:行者123 更新时间:2023-12-02 17:52:51 28 4
gpt4 key购买 nike

似乎我是唯一一个使用 Opencv 2.4.3 遇到这个问题的人。

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);
grayMat , 直接用作 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。请帮忙。

最佳答案

OpenCV 文档中的示例代码使用 C++ 接口(interface) (findChessboardCorners)。您正在调用 C 接口(interface) ( cvFindChessboardCorners )。如果您可以使用 C++ 接口(interface),我强烈推荐它。我认为您应该能够使用 C++ 接口(interface),因为如果您的代码编译为 C,我认为它不会提示强制转换为 void 指针(尽管我可能错了!)。

注意:根据命名空间,您可能必须像这样调用函数:
cv::findChessboardCorners
您应该可以直接通过 gray没有任何类型转换的对象。

关于visual-studio-2010 - 无法从 'cv::Mat' 转换为 'void *',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16024863/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com