我目前正在开发一款实验相机应用程序.我正在考虑实施面部检测,目前我正在权衡我的选择.
我已经考虑过可用于Android的OpenCV端口并使用他们的面部检测功能,但是从我以前的实现中看到的演示,相机似乎滞后了很多.
考虑到HTC Desire上的摄像头具有面部检测支持,我知道必须能够至少获得一个半体面的人脸检测系统.我只是想知道是否有人对如何获得最佳结果有意见...使用可用的库?自己实现一个特定的算法?
我正在为Android应用程序制作自定义相机,如"SnapChat",但相机预览在诸如(Moto g第二代,一个+一个)但很少(三星s3,三星s4)等少数设备上延伸.我使用以下参考 全屏相机显示/预览不保持纵横比 - 图像歪斜,拉伸以适应屏幕.但这对我100%没有帮助.我在分享屏幕.
三星摩托G第二代的拉伸图像是.

没有拉伸的三星S3图像是Above
private void setPreviewLayout() {
if (null == mCamera) {
return;
}
Camera.Parameters parameters = null;
Camera.Size size = null;
try {
int screenWidth = (int) getResources().getDisplayMetrics().widthPixels;
int screenHeight = (int) getResources().getDisplayMetrics().heightPixels;
parameters = mCamera.getParameters();
size = getOptimalPreviewSize(mCamera.getParameters().getSupportedPreviewSizes(), screenWidth, screenHeight);
if (size != null) {
parameters.setPreviewSize(size.width, size.height);
}
parameters.setPictureSize(screenHeight, screenWidth);
;
mCamera.setParameters(parameters);
if (on && currentCameraId == Camera.CameraInfo.CAMERA_FACING_BACK) {
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
} else {
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
}
parameters.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO);
parameters.setExposureCompensation(0);
parameters.setPictureFormat(ImageFormat.JPEG);
parameters.setJpegQuality(100);
List<String> focusModes = parameters.getSupportedFocusModes(); …Run Code Online (Sandbox Code Playgroud) 嘿我正在android studio中设计一个应用程序.我需要相机的许可.我已经包含<uses-permission android:name="android.permission.CAMERA" />
在AndroidManifest.xml文件中.它在除Marshmallow之外的所有Android版本中都能正常工作.如何默认获得相机权限?如果不可能,我该如何向用户询问?
据我所知,Android模拟器没有相机.要捕获实时图像,我们必须使用网络摄像头.我在这个网站上看到代码使用android模拟器中的网络摄像头来捕获图像,但我不知道如何使用这段代码.
我正在尝试创建一个能够实时处理相机帧的Android应用程序.首先,我只想显示相机所看到的灰度版本.我设法从方法中的字节数组中提取适当的值onPreviewFrame.以下只是我的代码片段:
byte[] pic;
int pic_size;
Bitmap picframe;
public void onPreviewFrame(byte[] frame, Camera c)
{
pic_size = mCamera.getParameters().getPreviewSize().height * mCamera.getParameters().getPreviewSize().width;
pic = new byte[pic_size];
for(int i = 0; i < pic_size; i++)
{
pic[i] = frame[i];
}
picframe = BitmapFactory.decodeByteArray(pic, 0, pic_size);
}
Run Code Online (Sandbox Code Playgroud)
帧阵列的第一个[width*height]值byte[]是亮度(灰度)值.一旦我提取了它们,我如何将它们作为图像显示在屏幕上?它也不是2D数组,所以如何指定宽度和高度?
我需要与应用程序即时心率相同的功能.
基本过程要求用户:
这可以通过打开闪光灯并在血液通过食指时观察光线变化来实现.
如何从视频捕获中获取亮度数据?我应该在哪里寻找这个?我仔细查看了课程,AVCaptureDevice但没有找到任何有用的东西.
我也发现AVCaptureDeviceSubjectAreaDidChangeNotification,这会有用吗?
这似乎是世界上最简单的事情:使用默认的相机活动在Android应用中拍照.但是,StackOverflow和Web上的几个帖子中都有许多陷阱,例如,Null Intents被传回,图片的方向不正确或OutOfMemoryErrors.
我正在寻找一个允许我的解决方案
而且,我想尽可能避免设备配置(制造商,型号,操作系统版本)的具体实现.所以我想知道:实现这一目标的最佳方法是什么?
我正在开发一个增强现实应用程序位置,我需要获得视野[FOV](我只是在方向改变时更新值,所以我正在寻找一种方法,当我调用它时可以得到这个值)
目标是使"程度统治者"与现实相关,如下所示:

我已经AVCaptureSession用来显示相机流; 以及与a相连的路径CAShapeLayer来绘制标尺.这工作得很好,但现在我必须使用视场值将我的元素放在正确的位置(例如,选择160°和170°之间的正确空间!).
实际上,我用这些来源硬编码这些值:https://stackoverflow.com/a/3594424/3198096(特别感谢@ hotpaw2!)但我不确定它们是完全精确的,这不是处理iPhone 5等我无法从官方渠道获取价值(Apple!),但有一个链接显示我认为我需要的所有iDevice的值(4,4S,5,5S):AnandTech | 关于iphone 5s相机改进的一些想法.
注意:经过个人测试和其他在线研究,我很确定这些值是不准确的!这也迫使我使用外部库来检查我使用哪种型号的iPhone来手动初始化我的FOV ......我必须检查所有支持设备的值.
看完这篇文章后:iPhone:实时视频颜色信息,焦距,光圈?,我试图exif data从建议的AVCaptureStillImageOutput 获得.之后,我可以从exif数据中读取焦距,然后通过公式计算水平和垂直视野!(或者可以直接获得如下所示的FOV:http://www.brianklug.org/2011/11/a-quick-analysis-of-exif-data-from-apples-iphone-4s-camera-samples/ - -
注意:经过一定数量的更新后,似乎我们无法直接从exif获取视野!)
来自:http://iphonedevsdk.com/forum/iphone-sdk-development/112225-camera-app-working-well-on-3gs-but-not-on-4s.html和修改后的EXIF数据无法保存正确
这是我正在使用的代码:
AVCaptureDevice* camera = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if (camera != nil)
{
captureSession = [[AVCaptureSession alloc] init];
AVCaptureDeviceInput *newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:camera error:nil];
[captureSession addInput:newVideoInput];
captureLayer = [[AVCaptureVideoPreviewLayer alloc] …Run Code Online (Sandbox Code Playgroud) 所以我制作了一个cordova应用程序,我添加了android平台,并制作了一个带有imput字段的简单html
<input type="file" capture="camera" accept="image/*" id="takePictureField">
Run Code Online (Sandbox Code Playgroud)
我已经添加了
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<feature name="http://api.phonegap.com/1.0/camera" />
Run Code Online (Sandbox Code Playgroud)
到清单文件.
但是当我按下按钮时,我无法选择用相机拍摄新照片.我有什么许可我想念,或其他什么?
我无法使用cordova拍照功能,它必须在纯HTML中完成.
我想在Swift Playgrounds iPad应用程序上访问iPad的相机.我发现捕捉视频数据是不可能的,即使我的游乐场运行正常.
captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!),AVCaptureVideoDataOutputSampleBufferDelegate协议的委托方法,没有被调用(可能是因为没有视频数据进入),而它在我的iOS应用程序中.
我的操场上的视图应该显示FaceTime摄像机视图.为什么我不能显示相机输出,即使Apple明确表示允许这样做?此外,Playground应用程序在我打开操场时会立即询问相机权限,因此应该以某种方式允许它.
import UIKit
import CoreImage
import AVFoundation
import ImageIO
import PlaygroundSupport
class Visage: NSObject, AVCaptureVideoDataOutputSampleBufferDelegate {
var visageCameraView : UIView = UIView()
fileprivate var faceDetector : CIDetector?
fileprivate var videoDataOutput : AVCaptureVideoDataOutput?
fileprivate var videoDataOutputQueue : DispatchQueue?
fileprivate var cameraPreviewLayer : AVCaptureVideoPreviewLayer?
fileprivate var captureSession : AVCaptureSession = AVCaptureSession()
fileprivate let notificationCenter : NotificationCenter = NotificationCenter.default
override init() {
super.init()
self.captureSetup(AVCaptureDevicePosition.front)
var faceDetectorOptions …Run Code Online (Sandbox Code Playgroud) camera ×10
android ×7
ios ×2
cordova ×1
fieldofview ×1
html ×1
iphone ×1
objective-c ×1
opencv ×1
orientation ×1
simulator ×1
swift ×1