iOSではイメージフォーマット間の変換が必要な理由が混乱しています。たとえば、UIImageにjpgをロードしてから顔検出を行いたい場合は、CIDmectorを作成してCIDetectorに渡す必要があります。これはメモリとパフォーマンスの両方でヒットしませんか?必要な画像フォーマットの変換が大変なのはなぜですか? (UIImage、CGImage、CIImage)
これは、Core Graphics、Core Image、UIKit(そしておそらくOpenGL ESですが、私はそれで動作しません)の間のいくつかの遺産ですか?ヒットは全体的にかわいいですか?
私は何をする必要があるのでしょうが、これについてもっと理解したいと思います。また、時にはコンバージョンを行ったり、フォーマットの違いに絡み合ったりすることもあります。
更新
[OK]を - 私はちょうどこれらのフォーマット(またはこれらのフォーマットの混乱...)上で、私の混乱によって再びdingedました。半時間を無駄にした。
テストをローカル画像内の顔のために、私は必要なCIImageを作成:ここで私はやっていたものです。
CIImage *ciImage = [image CIImage];
と関係なく、私が渡されたどのような方向の任意の機能を取り戻すなかっれていなかった私はこの特定のイメージは、CIImage
フォーマットで問題が発生したとの前にCIDetectorTypeFace
と動作しています。試してみました。このようなCCImage作成:
CIImage *ciImage = [CIImage imageWithCGImage:image.CGImage];
と顔検出を正常に動作します。 Arrgh!私は[image CIImage]
で結果のCIImageがゼロでないことを確認しました。だから私は混乱している。最初のアプローチはポインタを取得し、2番目のアプローチは新しいCIImageを作成します。違いがありますか?
私は以下を参照してくださいUIImage.hファイルに掘り:
// returns underlying CGImageRef or nil if CIImage based
@property(nonatomic,readonly) CGImageRef CGImage;
// returns underlying CIImage or nil if CGImageRef based
@property(nonatomic,readonly) CIImage *CIImage;
だから私はそれがキーだと思い - 開発者がを用心:nilのためのテスト...