【发布时间】:2014-08-15 13:55:57
【问题描述】:
我是在 Visual Studio 上使用 OpenCV 的新手,我最近重新安装了我的 VS2012 以使其使用 OpenCV 2.4.2 工作。
我正在尝试计算通过鼠标单击顶点并将它们推送到 CvSeq* 指定的区域面积,以与 contourArea() 函数一起使用。
我目前正在尝试将一个空的 CvSeq* 解析为我的自定义鼠标回调函数的最后一个参数,以便我可以添加由 x 和 y 坐标形成的 CvPoint。但是,之后每当我尝试访问 CvSeq* 轮廓时,都会出现错误。所以在下面sn-p的代码中:
void CallBackFunc(int event, int x, int y, int flags, void* userdata)
{
CvSeq* contour = (CvSeq*)userdata;
CvPoint cur;
if ( event == EVENT_LBUTTONDOWN )
{
cout << "Left button of the mouse is clicked - position (" << x << ", " << y << ") saved as point" << endl;
// save x,y as a contour point
cur = cvPoint(x,y);
cvSeqPush(contour, &cur);
...
我得到了正确的 cout 消息,但是在尝试使用 CvSeq* 绘制轮廓时出现这样的错误: opencvtest.exe 中 0x75E3812F 处未处理的异常:Microsoft C++ 异常:内存位置 0x001FF990 处的 cv::Exception。
这里有什么问题?尝试使用 Vector> 而不是 CvSeq 会更好吗?
【问题讨论】:
-
只是好奇,如果您刚开始使用 OpenCV,为什么不从最新版本 (2.4.9) 而不是非常旧的版本 (2.4.2) 开始?
-
遇到了一些安装问题,回到了有在线安装指南文档的版本
标签: c++ opencv visual-studio-2012 contour