私のアプリにカスタムカメラを実装したい。だから、AVCaptureDevice
を使ってこのカメラを作っています。iOSのAVCaptureDeviceの出力でGrayScaleを設定する
今、カスタムカメラにグレーアウトプットを表示したいとします。だから私はsetWhiteBalanceModeLockedWithDeviceWhiteBalanceGains:
とAVCaptureWhiteBalanceGains
を使ってこれを得ようとしています。私はこれにAVCamManual: Extending AVCam to Use Manual Captureを使用しています。
- (void)setWhiteBalanceGains:(AVCaptureWhiteBalanceGains)gains
{
NSError *error = nil;
if ([videoDevice lockForConfiguration:&error]) {
AVCaptureWhiteBalanceGains normalizedGains = [self normalizedGains:gains]; // Conversion can yield out-of-bound values, cap to limits
[videoDevice setWhiteBalanceModeLockedWithDeviceWhiteBalanceGains:normalizedGains completionHandler:nil];
[videoDevice unlockForConfiguration];
}
else {
NSLog(@"Could not lock device for configuration: %@", error);
}
}
しかし、そのために、私はRGBゲインがだから私はMAXとMINの値をチェックするため、このメソッドを作成しています1〜4の間の値渡すために持っている必要があります。
- (AVCaptureWhiteBalanceGains)normalizedGains:(AVCaptureWhiteBalanceGains) gains
{
AVCaptureWhiteBalanceGains g = gains;
g.redGain = MAX(1.0, g.redGain);
g.greenGain = MAX(1.0, g.greenGain);
g.blueGain = MAX(1.0, g.blueGain);
g.redGain = MIN(videoDevice.maxWhiteBalanceGain, g.redGain);
g.greenGain = MIN(videoDevice.maxWhiteBalanceGain, g.greenGain);
g.blueGain = MIN(videoDevice.maxWhiteBalanceGain, g.blueGain);
return g;
}
また、RGBゲイン静的値を渡すようなさまざまな効果を得ようとしています。私のカスタムカメラに:(ピクセル= 0.30078125fの*のR + 0.5859375f * G + 0.11328125f * B式)
- (AVCaptureWhiteBalanceGains)normalizedGains:(AVCaptureWhiteBalanceGains) gains
{
AVCaptureWhiteBalanceGains g = gains;
g.redGain = 3;
g.greenGain = 2;
g.blueGain = 1;
return g;
}
は今、私はこのグレースケールを設定します。私はこの式のためにこれを試しました。
- (AVCaptureWhiteBalanceGains)normalizedGains:(AVCaptureWhiteBalanceGains) gains
{
AVCaptureWhiteBalanceGains g = gains;
g.redGain = g.redGain * 0.30078125;
g.greenGain = g.greenGain * 0.5859375;
g.blueGain = g.blueGain * 0.11328125;
float grayScale = g.redGain + g.greenGain + g.blueGain;
g.redGain = MAX(1.0, grayScale);
g.greenGain = MAX(1.0, grayScale);
g.blueGain = MAX(1.0, grayScale);
g.redGain = MIN(videoDevice.maxWhiteBalanceGain, g.redGain);
g.greenGain = MIN(videoDevice.maxWhiteBalanceGain, g.greenGain);
g.blueGain = MIN(videoDevice.maxWhiteBalanceGain, g.blueGain);
return g;
}
のでにはどうすれ 4から1の間で、この値を渡すことができますか..?
これを比較する方法や規模はありますか?
お願いします。
ホワイトバランスを調整しても、カラー画像は白黒画像に変換されません。これを行うには、別のAPIを見つける必要があります。たとえば、[vImageMatrixMultiply_ARGB8888](https://developer.apple.com/library/ios/documentation/Performance/Reference/vImage_transform/index.html#//apple_ref/c/func/vImageMatrixMultiply_ARGB8888) – Mats
@Mats:ありがとう.. !!より理解しやすいようにサンプルコードを入力してください。 –
多分、これは、http://stackoverflow.com/questions/21207099/、質問に役立ちます。 – Mats