Tag: opencv

将UIImage转换为cv :: Mat

我有一个UIImage这是从iPhone相机捕获的图片,现在我想UIImage被转换为cv :: Mat(OpenCV)。 我正在使用以下代码行来完成此操作: -(cv::Mat)CVMat { CGColorSpaceRef colorSpace = CGImageGetColorSpace(self.CGImage); CGFloat cols = self.size.width; CGFloat rows = self.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], // […]

如何在iOS上使用OpenCV二进制化CGImage?

在我的iOS项目中,我有一个RGB的CGImage,我想二元化(转换为黑白)。 我想使用OpenCV来做到这一点,但我是OpenCV的新手。 我find了一本关于OpenCV的书,但它不适用于iPhone。 如何在iOS上使用OpenCV对这样的图像进行二进制化?

OCR使用openCV

我想用openCV给图像效果,我从前两天开始挣扎,从我身边做了一点点。 但是没有得到好的输出。 直到现在我只能转换成灰色。 如何实现剩余的效果? 我使用这种方法在灰色转换 – (void)blackAndWhite { cv::Mat dst; cv::Mat src=[self cvMatFromUIImage:iv.image]; if( !src.data ) { std::cout<<"Usage: ./Histogram_Demo <path_to_image>"<<std::endl; } /// Convert to grayscale cvtColor( src, src, CV_BGR2GRAY ); /// Apply Histogram Equalization //equalizeHist( src, dst ); iv.image =[self UIImageFromCVMat:src]; } 谢谢 1)在灰色转换后 2)应用黑白效果 3)去除深黑色的背景,改变图像的方向。

OpenCV:如何创build.vec文件以使用opencv_traincascade

正如我在我以前的post中解释的,我正在尝试生成一些cascade.xml文件来识别在我的iOS应用程序中使用的欧元硬币。 无论如何,我在理解如何生成一个.vec文件给opencv_traincascade作为input时opencv_traincascade很多困难。 这是因为我听到了许多不同的意见:有人告诉我,vector文件只能包含仅包含要识别的对象的正面图像; 别人(也可以在我的教程中阅读)说,vector文件必须包含“样本”图像,换句话说,要识别的对象已被opencv_createsamples添加到的随机背景中。 用另外的话来说: opencv_createsamples -img positives/1.png -bg negatives.txt -info 1.txt -num 210 -maxxangle 0.0 -maxyangle 0.0 -maxzangle 0.9 -bgcolor 255 -bgthresh 8 -w 48 -h 48 其中生成了12000个图像。 最后,我已经创build了.vec文件: cat *.txt > positives.txt opencv_createsamples -info positives.txt -bg negatives.txt -vec 2.vec -num 12600 -w 48 -h 48 所以,我想问问你哪个正确的图像包含在以下两个vector文件中: 而且,这是最后一次发起培训的命令吗? 这是我迄今使用过的: opencv_traincascade -data final -vec 2.vec […]

使用HoughCircles检测和测量瞳孔和虹膜

我试图使用OpenCV,更具体地说,它的HoughCircles来检测和测量瞳孔和虹膜,目前我一直在玩一些variables的函数,因为它要么返回0圈,要么过量。 下面是我正在使用的代码和testing图像。 虹膜测量代码: eye1 = [self increaseIn:eye1 Contrast:2 andBrightness:0]; cv::cvtColor(eye1, eye1, CV_RGBA2RGB); cv::bilateralFilter(eye1, eye2, 75, 100, 100); cv::vector<cv::Vec3f> circles; cv::cvtColor(eye2, eye1, CV_RGBA2GRAY); cv::morphologyEx(eye1, eye1, 4, cv::getStructuringElement(cv::MORPH_RECT,cv::Size(3, 3))); cv::threshold(eye1, eye1, 0, 255, cv::THRESH_OTSU); eye1 = [self circleCutOut:eye1 Size:50]; cv::GaussianBlur(eye1, eye1, cv::Size(7, 7), 0); cv::HoughCircles(eye1, circles, CV_HOUGH_GRADIENT, 2, eye1.rows/4); 测量瞳孔的代码: eye1 = [self increaseBlackPupil:eye1]; cv::Mat eye2 = […]

iOS中的摄像头动作感应

我正在iOS上开发一个应用程序,如果相机检测到图像发生了一些变化,或者我们可以说图像中有运动,就会发生一个事件。 在这里,我不是在询问人脸识别或特定的彩色图像运动,而且我在search时得到了OpenCV的所有结果,而且我也发现可以通过使用陀螺仪和加速度计来实现这一点,但怎么样? 我是iOS的初学者。所以我的问题是,有没有任何框架或任何简单的方法来检测相机的运动或运动感应。以及如何实现? 例如,如果我在相机之前移动我的手,它会显示一些消息或警报。 和PLZ给我一些有用的和易于理解的链接关于这一点。 感谢名单

将Xcode升级到4.5.2和将OpenCV升级到2.4.3之后的链接器错误

直到今天上午,我的项目工作得很好。 我使用的是xcode 4.3和一个较旧版本的OpenCV(我不确定确切的版本)。 OSX已经是10.7.x,但不是10.7.5 今天,在将OSX升级到10.7.5,将xcode升级到4.5.2,并下载OpenCV 2.4.3之后,在尝试构build项目时出现以下链接器错误: 未定义的符号为build筑armv7: “_OBJC_CLASS _ $ _ ALAssetsLibrary”,引用自: 在opencv2中的objc-class-ref(cap_ios_video_camera.o) “cv :: FeatureDetector :: create(std :: string const&)”,引用自: ImageAnalyzer.o中的[ImageAnalyzer detectBlobs:] “cv :: FeatureDetector :: detect(cv :: Mat const&,std :: vector>&,cv :: Mat const&)const”,引用自: ImageAnalyzer.o中的[ImageAnalyzer detectBlobs:] ld:符号(s)找不到架构armv7 铿锵声:错误:链接器命令失败,退出代码1(使用-v来查看调用) 为了使用新的opencv框架,我删除了对旧框架的引用,并将该项目引用到从此处下载的官方预编译的opencv2.framework中。 我也删除了对libz.dylib的引用,而是添加了对libc ++。dylib的引用。 最后一步是将前缀文件更新到新的框架。 前缀文件中的相关部分现在看起来像这样: #ifdef __cplusplus #import <opencv2/opencv.hpp> #endif 这一切都缩小到这4个链接器错误,我似乎无法摆脱。 我尝试使用libstdc ++。dylib ,但是我得到更多的错误。 我也尝试过自己构buildOpenCV,但是我仍然得到与预构build框架相同的错误。 […]

调整angular落和裁剪图像openCV

我在IOS中使用公开简历。 我已经在图像中显示了图像中的纸张边界,现在我必须拖动这些边界线来调整裁剪框。 我们如何调整边界线以及如何在边界内裁剪图像? 这是可能的openCV或我使用OpenGL的呢? @moosgummi:我在下面的方法中调用你的方法 – (cv::Mat)finshWork:(cv::Mat &)image { Mat img0 =image; Mat img1; cvtColor(img0, img1, CV_RGB2GRAY); // apply your filter Canny(img1, img1, 100, 200); // find the contours vector< vector<cv::Point> > contours; findContours(img1, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE); // you could also reuse img1 here Mat mask = Mat::zeros(img1.rows, img1.cols, CV_8UC1); // CV_FILLED fills the connected […]

打开cv iosvideo​​处理

我正在尝试使用openCv框架来做这里的iosvideo​​处理教程。 我已经成功地将ios openCv框架加载到我的项目中, 但似乎在我的框架和教程中提供的框架之间不匹配,我希望有人能帮助我。 OpenCv使用cv::Mattypes来表示图像。 当使用AVfoundation委托来处理来自相机的图像时 – 我将需要将所有的CMSampleBufferRef转换为该types。 看来,本教程中介绍的openCV框架提供了一个名为using的库 #import <opencv2/highgui/cap_ios.h> 用新的委托命令: 任何人都可以指出我在哪里可以find这个框架或CMSampleBufferRef和cv::Mat之间的快速转换 编辑 在opencv框架中有很多细分(至less对ios来说)。 我已经通过各种“官方”网站下载它,并使用THEIR指令使用fink和brew等工具。 我甚至比较了安装到/ usr / local / include / opencv /中的头文件。 每次都不一样 下载openCV项目时 – 在同一个项目中有各种cmake文件和冲突的自述文件。 我认为我成功地为IOS构build了一个好的版本,通过这个链接内置了框架的avcapturefunction(通过这个头文件<opencv2/highgui/cap_ios.h> ),然后使用ios目录中的python脚本构build库- 使用命令python opencv/ios/build_framework.py ios 。 我会尝试更新

IOS / iPad / iPhone的最高速度

我使用OpenCV for iOS完成了计算密集型应用程序。 当然这很慢。 但是这比我的电脑原型慢了200倍。 所以我正在优化它。 从最初的15秒开始,我能够获得0.4秒的速度。 我想知道我是否find了所有的东西,以及别人可能想要分享的东西。 我做了什么: 将OpenCV内的“ double ”数据typesreplace为“ float ”。 Double是64bit和32bit CPU不能轻易处理,所以float给了我一些速度。 OpenCV经常使用double。 编译器选项中增加了“ -mpfu=neon ”。 副作用是仿真器编译器不再工作的新问题,只能在本机硬件上testing任何东西。 使用90个值查找表replacesin()和cos()实现。 加速是巨大的! 这与个人电脑有些相反,在这种情况下,这种优化不会加速。 代码以度为单位工作,这个值被转换为sin()和cos()弧度。 这段代码也被删除了。 但查找表做了这项工作。 启用"thumb optimizations" 。 一些博客文章推荐完全相反,但这是因为拇指通常使armv6速度变慢。 armv7没有任何问题,使事情更快,更小。 为了确保拇指优化和-mfpu=neon工作在最好的状态,不要引入崩溃我完全删除armv6目标。 我所有的代码都编译为armv7 ,这也被列为app store的要求。 这意味着最低iPhone将是3GS 。 我认为放弃旧的是可以的。 无论如何,老一些的CPU速度较慢,CPU密集型应用程序如果安装在旧设备上,则会提供较差的用户体验 当然我使用-O3 flag 我从OpenCV中删除了"dead code" 。 通常在优化OpenCV时,我会看到我的项目显然不需要的代码。 例如经常有一个额外的"if()"来检查像素大小为8位或32位,我知道我只需要8位。 这将删除一些代码,为优化器提供更好的机会去除更多的东西或用常量replace。 另外代码更适合caching。 任何其他的技巧和想法? 对于我来说,启用拇指和replace三angular函数是助推器制造商,让我感到惊讶。 也许你知道更多的事情,使应用程序飞行?