現在、AVFoundationを使用してカメラを実行していますが、カメラがフォーカスを完了したときに検出できるようにしたいと考えています。これを行う方法はありますか?AVFoundationカメラがフォーカスを終了したときに検出する
ありがとうございます!
現在、AVFoundationを使用してカメラを実行していますが、カメラがフォーカスを完了したときに検出できるようにしたいと考えています。これを行う方法はありますか?AVFoundationカメラがフォーカスを終了したときに検出する
ありがとうございます!
によると、あなたは、デバイス が現在注力しているかどうかを判断するために
adjustingFocus
プロパティを使用することができます。デバイスが開始してフォーカスを停止するときに通知されるように、key-value observing
を使用してプロパティを確認できます。初期設定で
:
あなたがフォーカスモードの設定を変更する場合は、次のように、あなたは デフォルトの設定に戻すことができます
[[[captureManager videoInput] device] addObserver:self forKeyPath:@"adjustingFocus" options:NSKeyValueObservingOptionNew context:nil];
、その後:
bool focusing = false;
bool finishedFocus = false;
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
//[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
if([keyPath isEqualToString:@"adjustingFocus"]){
BOOL adjustingFocus = [ [change objectForKey:NSKeyValueChangeNewKey] isEqualToNumber:[NSNumber numberWithInt:1] ];
if (adjustingFocus) {
focusing=true;
}
else {
if (focusing) {
focusing = false;
finishedFocus = true;
}
}
}
}
私はリンゴ(優秀)を読んで好きではない私のような人のためのシュバンクの答えに展開することがメリットだと思いますAVCaptureDeviceが露出を調整している間に来たフレームを破棄するためのいくつかの目的を示唆する文書、ホワイトポイントなどがあります。
ありがとう@ alexi-akl!これは私が行方不明だったコードでした::) – cdescours
私の答えは助けてくれてうれしかった:) @cdescours –