相关疑难解决方法(0)

openCV 2.4.3 iOS框架编译器无法识别某些c ++标头

openCV 2.4.3/Xcode 4.5.2/mac osx 10.8.2

我想让openCV与iOS一起工作.我试图使用openCV.org中的预构建的2.4.3框架.但是我得到以下xcode项目构建错误,表明编译器不知道它正在处理c ++,例如

#include <list>       !'list' file not found

namespace cv          !unknown type name 'namespace'
Run Code Online (Sandbox Code Playgroud)

这似乎只涉及以下头文件:
"opencv2/nonfree/features2d.hpp"
"opencv2/nonfree/nonfree.hpp"
"opencv2/video/video.hpp"

如果我不在opencv.hpp(或其他任何地方)中包含这三个文件,我似乎能够编译并使用openCV ok.问题是,我确实需要非自由文件,因为我正在试验SURF - 最近已经转移到非自由.

这真是一个双重问题(对不起;-)

  • 如何说服编译器这些是c ++头文件?
  • 我需要使用SURF哪些标题?

更新

我克隆了openCV git存储库,并从中构建了一个新的框架.这种方法以前没有用,但今天我意识到我没有使用当前版本的CMAKE.我一直在使用CMAKE 2.8.2,这将无法为ios构建opencv.当前版本的CMAKE 2.8.10构建它没有任何问题(这是一个服从文档的对象课程,确实需要CMAKE min.v2.8.8).

现在,当我在Xcode项目中添加opencv框架的当前版本时,我可以包含features2dnonfree并顺利构建.唯一的问题仍然是一个标题:video/background_segm.hpp,仍然产生:

#include <list>       !'list' file not found
Run Code Online (Sandbox Code Playgroud)

如果我评论行,我会在下一行收到错误:

namespace cv          !unknown type name 'namespace'
Run Code Online (Sandbox Code Playgroud)

很明显,编译器不会将其识别为C++标头,即使它是后缀.hpp.

opencv2/video/video.hpp 如果我删除

#include "opencv2/video/background_segm.hpp"
Run Code Online (Sandbox Code Playgroud)

我也可以用video.hpp它来构建(虽然我猜它在实践中是无法使用的).

不幸的是,我仍然无法让SURF工作.当我运行该项目时,它崩溃了这个错误:

OpenCV错误:未实现功能/功能(OpenCV是在没有SURF支持的情况下构建的)

这是在legacy/features2d.cpp:

   Ptr<Feature2D> surf = Algorithm::create<Feature2D>("Feature2D.SURF");
   if( …
Run Code Online (Sandbox Code Playgroud)

c++ xcode opencv ios

11
推荐指数
1
解决办法
9785
查看次数

iOS:从背景图像中检索矩形图像

我正在开发一个实现,我在大背景图像中有一个矩形图像.我试图以编程方式从大图像中检索矩形图像,并从该特定矩形图像中检索文本信息.我正在尝试使用Open-CV第三方框架,但无法从大背景图像中检索矩形图像.有人可以指导我,我怎么能做到这一点?

更新:

我发现链接使用OpenCV找出方形.我可以修改它以找到矩形形状吗?有人可以指导我吗?

更新的最新消息:

我终于得到了代码,下面是它.

    - (cv::Mat)cvMatWithImage:(UIImage *)image
{
    CGColorSpaceRef colorSpace = CGImageGetColorSpace(image.CGImage);
    CGFloat cols = image.size.width;
    CGFloat rows = image.size.height;

    cv::Mat cvMat(rows, cols, CV_8UC4); // 8 bits per component, 4 channels

    CGContextRef contextRef = CGBitmapContextCreate(cvMat.data,                 // Pointer to backing data
                                                    cols,                       // Width of bitmap
                                                    rows,                       // Height of bitmap
                                                    8,                          // Bits per component
                                                    cvMat.step[0],              // Bytes per row
                                                    colorSpace,                 // Colorspace
                                                    kCGImageAlphaNoneSkipLast |
                                                    kCGBitmapByteOrderDefault); // Bitmap info flags

    CGContextDrawImage(contextRef, CGRectMake(0, 0, cols, rows), image.CGImage);
    CGContextRelease(contextRef); …
Run Code Online (Sandbox Code Playgroud)

opencv ios

5
推荐指数
1
解决办法
7674
查看次数

适用于iOS的libstdc ++ OpenCV 2.4.3+?

我正在尝试将最新版本的OpenCV包含到现有的iOS项目中,并且因为我的XCode项目设置为使用libstdc ++而不是libc ++/C++ 11支持而导致链接器错误.

我见过其他几个通过启用libc ++修复错误的人.例子:

但是,我需要使用libstdc ++,因为我有其他第三方库已经使用较旧的stdlib编译(无法更改).有没有办法在没有-stdlib = libc ++的情况下编译OpenCV 2.4.3+?是否有特殊标志传递给CMake?或者OpenCV源代码的ios文件夹中的build_framework.py脚本?

或者,是否有人有二进制版本?似乎所有可从OpenCV下载的都假设是libc ++/C++ 11.

c++ xcode opencv ios c++11

5
推荐指数
1
解决办法
3095
查看次数

适用于iOS的OpenCV错误/检测Hough Circles

我一直试图用openCV运行一个xcode项目.我构建了源代码,将其导入到项目中,并在.pch文件中包含#ifdef __cplusplus #import opencv2/opencv.hpp> #endif.

我按照http://docs.opencv.org/trunk/doc/tutorials/introduction/ios_install/ios_install.html上的说明进行操作

我编译时仍然遇到很多Apple Mach-O链接器错误.

Undefined symbols for architecture i386:
 "std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from:
Run Code Online (Sandbox Code Playgroud)

请帮帮我,我真的迷路了..

更新:

错误全部修复,现在我试图检测圈子..

Mat src, src_gray;

cvtColor( image, src_gray, CV_BGR2GRAY );

vector<Vec3f> circles;

/// Apply the Hough Transform to find the circles
HoughCircles( src_gray, circles, CV_HOUGH_GRADIENT, 1, image.rows/8, 200, 100, 0, 0 );


/// Draw the circles detected
for( size_t i = 0; i < circles.size(); i++ )
{
    Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
    int radius = cvRound(circles[i][2]);
    // circle center
    circle( src, …
Run Code Online (Sandbox Code Playgroud)

opencv cmake ios

2
推荐指数
1
解决办法
3561
查看次数

标签 统计

ios ×4

opencv ×4

c++ ×2

xcode ×2

c++11 ×1

cmake ×1