它的另一个OpenCV问题。我喜欢这个东西,但它会严重地驱使你疯狂。没有匹配函数调用cvGet2D
问题:我正在iOS上为iPhone开发项目,是OpenCV。我不知道我是否有一个坏框架或什么。
这工作:
cv::Canney()
cv::adaptiveThreshold()
但是,当我尝试
"cvGet2D()" (without previous "cv::")
我得到的错误:调用 'cvGet2D'
当我只需键入“cvGet2D没有匹配的功能()“它显示在代码提示中,暗示它至少找到头文件?当我尝试键入“cv :: get2D”或“cv :: cvGet2D”时,什么都不显示。我很沮丧,因为我安装的OpenCV框架仍然感觉像一个我不明白的黑盒子。
具体来说,你认为它可以对开发与未开发以及链接正确的库有什么关系吗?只是把东西扔到那里。
非常感谢大家。我真的很感激,不能等到我有足够的智慧回馈一些。
编辑:
因此,最新的尝试澄清。
cv::cvGet2D(results,0,0);
新的错误是:在命名空间 'CV' cvGet2D ““命名任何成员”;
这里的任何想法
多个编辑:再次
感谢您的答复.. 4小时后,还有几杯咖啡,我仍然感到困惑,如果我搞砸了命名空间,为什么cv :: adaptiveThreshold这样的东西可以正常工作,但cv :: get2D没有显示出来?它严重地导致了大脑出血。
所以,看起来我应该选择C或C++版本的解决方案。建议您提供任何提示。我会补充说我在我的界面中有:#import <OpenCV/opencv2/opencv.hpp>
。然后导入核心库,我可以看到cvGet2D的结构。再次感谢。
进展!
这些是我的新想法。
cv::Mat tempMat = [self.imageView.image CVMat];
cv::Mat testMat = tempMat(cv::Rect(0,0,2591, 1));
cv::Mat templateMat = tempMat(cv::Rect(0,0,100,1));
cv::Mat results;
cv::matchTemplate(testMat, templateMat, results, CV_TM_CCOEFF_NORMED);
typedef Vec<float, 2> Vec2f;
Vec2f& elem = results.at<Vec2f>(0 , 35);
float value1 = elem[0];
float value2 = elem[1];
因此,也许它应该使用?切?也许,但它似乎在做一些事情。新的问题,wtf做了一个matchTemplate输出?它的1行,在这种情况下2492列。我想我的问题是,如果(0,35)的值超过一个数字? elem [0]和elem [1]代表什么?正如你可能知道的那样,我只是从一张图片中取出一行,并用它的一小块作为模板。该照片包含垂直线条,所以我希望能够确定线条彼此之间的距离。是的,它的错综复杂。但是,为了这个讨论的目的,实际上应该只有一行,并且一系列的列为每个比较输出一个相关系数,因为它是正确的?
再次感谢你的男人,伙伴,伙计们,老板们和你们所有聪明的群众!
现在你问一个完全不同的问题。 Stack Overflow遵循每题一个答案的风格,所以如果你不断改变这个问题,对那些试图帮助你的人来说是不公平的。正确的过程应该是:将问题还原为前一个问题,选择解决问题的答案,并在新线程中提出新问题。 – karlphillip