问题标签 [cifacefeature]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
7439 浏览

ios - CIDetector 和 UIImagePickerController

我正在尝试实现内置的 iOS 5 人脸检测 API。我正在使用一个实例UIImagePickerController来允许用户拍照,然后我试图用它CIDetector来检测面部特征。不幸的是,featuresInImage总是返回一个大小为 0 的数组。

这是代码:

这总是返回 0 个特征。但是,如果我使用应用程序内置文件中的 UIImage,则面部检测效果很好。

我正在使用这篇实用书架文章中的代码。

对于它的价值,我认为错误是当我将 UIImage 从相机转换为 CIImage 时,但它可能是任何东西。

0 投票
2 回答
5807 浏览

ios - iOS人脸检测器方向和CIImage方向的设置

编辑发现此代码有助于处理前置摄像头图像http://blog.logichigh.com/2008/06/05/uiimage-fix/

希望其他人有类似的问题,可以帮助我。还没有找到解决办法。(它可能看起来有点长,但只是一堆帮助代码)

我在从相机(正面和背面)获取的图像以及来自画廊的图像上使用 ios 面部检测器(我正在使用UIImagePicker- 用于通过相机捕获图像和从画廊中选择图像 - 不使用 avfoundation像在 squarecam 演示中那样拍照)

我真的搞砸了检测的坐标(如果有的话),所以我写了一个简短的调试方法来获取人脸的边界以及一个在他们上面画一个正方形的实用程序,我想检查检测器的方向正在工作:

[1]

在尝试了大量不同的图片后,我注意到人脸检测器的方向与相机图像属性不一致。我从前置摄像头拍摄了一堆照片,其中 uiimage 方向为 3(查询 imageOrientation),但人脸检测器没有为该设置找到人脸。当运行所有的 exif 可能性时,人脸检测器最终会拾取人脸,但都是针对不同的方向。

![1]: http://i.stack.imgur.com/D7bkZ.jpg

我该如何解决这个问题?我的代码有错误吗?

我遇到的另一个问题(但与面部检测器密切相关),当面部检测器拾取面部时,但是对于“错误”的方向(主要发生在前置摄像头上),UIImage最初使用的在 uiiimageview 中正确显示,但是当我绘制了一个方形叠加层(我在我的应用程序中使用 opencv,所以我决定将其转换UIImage为 cvmat 以使用 opencv 绘制叠加层)整个图像旋转 90 度(只有 cvmat 图像而不是UIImage最初显示的 i)

我能想到的原因是人脸检测器弄乱了 UIimage 转换为 opencv mat 正在使用的一些缓冲区(上下文?)。我怎样才能分离这些缓冲区?

将 uiimage 转换为 cvmat 的代码是(来自UIImage某人制作的“著名”类别):

0 投票
1 回答
1766 浏览

objective-c - 如何使用 CIFaceFeature 查找 IOS 的耳朵、脸颊和头部位置

在我的项目中,我需要对脸部的所有部位进行精细处理,例如眼睛、嘴巴、鼻子、耳朵、脸颊和头部。通过使用CIFaceFeature,我可以获得眼睛位置和嘴巴位置。

如何找到其余零件的位置?

0 投票
2 回答
1558 浏览

ios - 转换从 CIFaceFeature 返回的 CGPoint 结果

我试图弄清楚如何转换从CGPoint返回的结果CIFaceFeature,以便在CALayer. 以前我已经将我的图像标准化为 0 旋转,以使事情变得更容易,但这会导致在横向模式下使用设备拍摄的图像出现问题。

我已经为此工作了一段时间但没有成功,我不确定我对任务的理解是否不正确,或者我的方法是否不正确,或两者兼而有之。以下是我认为正确的:

来自相机的原始图像

根据该CIDetector featuresInImage:options:方法的文档

UIImageView 中显示的图像

在下面的代码中,我试图旋转一个 CGPoint,以便通过覆盖 UIImageView 的 CAShape 层来绘制它。

我正在做的(...或认为我在做...)是将左眼 CGPoint 平移到视图的中心,旋转 90 度,然后将点平移回原来的位置。这是不正确的,但我不知道我哪里出错了。是我的方法错误还是我实施它的方式?

-- leftEyePosition 是一个 CGPoint

从这篇文章:https://stackoverflow.com/a/14491293/840992,我需要根据 imageOrientation 进行旋转

方向

Apple/UIImage.imageOrientation Jpeg/文件 kCGImagePropertyOrientation

消息由 skinnyTOD 于 2013 年 2 月 1 日下午 4:09 编辑

0 投票
1 回答
3795 浏览

iphone - 如何检测完整的身体,如手、腿?

使用CIFaceFeature我们可以检测人脸特征。但我也想检测手和腿。

我们如何检测这些?是否有任何其他类或逻辑可以用来检测这些。

0 投票
1 回答
210 浏览

ios - 人脸检测器的内存使用未释放

我在像这样的图像的所有可能方向上使用 iOS 人脸检测器

但在分析器中似乎每次内存都在增长:

不确定这是否属实,如果是,如何解决问题

按总字节数排序并且仍然存在

类别的详细信息

相关代码

0 投票
1 回答
308 浏览

core-image - 使用 CIFaceFeature 检测,我可以确定在图像中检测到的人脸的置信度吗

我刚刚开始研究 CIDetector 以检测图像中的人脸,但我想知道是否有人幸运地确定了检测器在检测到人脸时的置信度。

我知道我们基本上可以通过选择不同的检测器精度来设置检测器阈值,但是有没有办法判断检测到的特征超过了要求的精度多少?

本质上,如果我的图像中有两张脸 - 假设使用该CIDirectorAccuracyHigh选项检测到两张脸,我如何确定哪一张更有可能是一张脸?

谢谢

穆斯塔法

0 投票
1 回答
381 浏览

objective-c - CIFaceDetector origin inaccuracy

I'm trying to use CIDetector/CIFaceDetector for basic face detection, and, while it seems to recognize faces correctly, the bounds rectangle is consistently inaccurate in everything I throw at it. Here's a sample, with the bounds it detects as a green box: http://i.imgur.com/bQNaEnq.jpg

Everything seems to be just universally shifted down or mirrored by this amount. It's like the coordinates are coming from the bottom left rather than the top left. I've tried all eight CIDetectorImageOrientations on this image and they all return the same incorrect coordinates. What am I missing here? Here is the code:

That's really it. The image is a basic UIImage imageWithData: from the web.

0 投票
0 回答
301 浏览

ios - 如何使用 CIDetector 和 CIFaceFeature 处理大图像和不同的纵横比

我已经为此工作了好几天,如果图像大小与 UIImageView 相同,那么所有示例都是如此。此外,Stack 上的很多答案都已过时。

我有一个应用程序,用户可以在其中添加图像,该图像可以是任意大小和不同的纵横比,例如 750X750、1280X920。UIImageView 当然更小,内容模式设置为 Aspect Fill。我做了很多测试,所以这就是我到目前为止所做的:

  1. 我使用仿射变换将 CoreImage 坐标转换为 UIKit

  2. 我从具有图像宽度/ UIImageView 宽度的大图像中获取缩放比例以按比例缩小。

现在我假设以上两种方法都可以工作,如果图像是 UIImageView 的精确纵横比,但由于使用 Aspect Fill 可能会更大,宽度可能会超出范围,因此 Face Rect 将不正确比例因子是 UIImageView 宽度。

提前谢谢你的帮助。

0 投票
0 回答
545 浏览

ios - 视频重力和人脸检测精度的 AVCaptureVideoPreviewLayer 问题

我想使用 AVFoundation 设置我自己的摄像头供稿并处理实时供稿以检测微笑。

很多我需要在这里完成:https ://developer.apple.com/library/ios/samplecode/SquareCam/Introduction/Intro.html

这段代码是很久以前写的,所以我需要做一些修改才能在外观方面按照我想要的方式使用它。

我所做的更改如下:

  • 我启用了自动布局和尺寸类,以便支持不同的屏幕尺寸。我还将预览层的尺寸更改为全屏。
  • 会话预设设置为 iPhone 和 iPad 的 AVCaptureSessionPresetPhoto
  • 最后,我将视频重力设置为 AVLayerVideoGravityResizeAspectFill (这似乎是关键点)

现在,当我运行应用程序时,会检测到人脸,但绘制矩形的坐标似乎有错误

看起来y在风景中有点偏离

看起来 x 在纵向上有点偏离

当我将视频重力更改为 AVLayerVideoGravityResizeAspect 时,一切似乎又可以正常工作了。

面部被捕获,实际上两者都被捕获,只是截图的时机不好

在肖像中

唯一的问题是,相机预览不是所需的全屏尺寸。

所以现在我想知道为什么会发生这种情况。我注意到方形凸轮中的一个函数:videoPreviewBoxForGravity,它处理重力类型并似乎进行了调整。- (CGRect)videoPreviewBoxForGravity:(NSString *)gravity frameSize:(CGSize)frameSize 孔径大小:(CGSize)孔径大小

我在这里注意到的一件事是,无论重力类型如何,框架尺寸都保持不变。

最后我在其他地方读到,当将重力设置为 AspectFill 时,提要的某些部分被裁剪,这是可以理解的,类似于 ImageView 的 scaletoFill。

我的问题是,如何进行正确的调整以使此应用程序适用于任何 VideoGravity 类型和任何大小的预览层。

我看过一些相关的问题,例如CIDetector 在面部特征上给出错误的位置似乎有类似的问题,但它没有帮助

提前致谢。