>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 セキュリティ
C-plus-plus

わずか数時間でアプリにプロレベルの美顔フィルターを追加する方法

2,293 スター

ビデオ通話功能を持つMessengerやコンテンツ作成アプリを作成している場合、ユーザーは必ずと言っていいほど次のような要求をしてきます。「フィルターはどこにありますか?ソーシャルメディアで映る自分のように、カメラでもっと肌を美しく見せたいのに」。そして、開発者はここでジレンマに直面します。シェーダーや低レベルグラフィックスを数ヶ月かけて学ぶか、プロセッサリソースを消費しない既成のソリューションを見つけるか。

今日は、リアルタイムの動画および写真処理の重い処理をGPUの力で肩代わりするクロスプラットフォームC++ライブラリ、GPUPixelについて探っていきましょう。

Cover

GPUPixelとは?ただのフォトエディターではない理由

GPUPixelは、C++11とOpenGL/ESに基づいて構築された高性能フィルターレンダリングエンジンです。主な利点は幅広い互換性です。事実上あらゆるプラットフォームで動作します:iOS、Android、macOS、Windows、Linux。您的设备支持OpenGL(几乎任何现代小工具),GPUPixel都能运行。

このプロジェクトは有名なのアイデアから生まれましたが、重要な違いがあります—クロスプラットフォームツールとしてゼロから設計され、メモリ使用量を最小限に抑えています。つまり、アプリが巨大なサイズに膨れ上がったり、ユーザーのスマートフォンを暖房器具に変えたりすることがありません。

GPUPixelが開発者を驚かせるポイント

このライブラリは単なる「セピア」や「白黒」フィルター以上のものを提供します。顔や動画ストリームを扱うための本格的な機能が含まれています:

  1. インテリジェント美顔フィルター。肌スムージング、美白、トーン調整—アジアのトップセルフィーアプリでおなじみの機能がすべて揃っています。
  2. 顔の特徴補正。顔を少し細くしたり目をより印象的に見せたりしたいですか?GPUPixelには顔ランドマークを処理する組み込みメカニズムがあります。
  3. リアルタイム動画処理。エンジンはカメラストリームを遅延なく処理するように最適化されています。これはストリーミングやWebRTC通話に不可欠です。
  4. 標準装備のクロスプラットフォームサポート。iOS用にSwift、Android用にJavaで別々のグラフィックス処理コードを記述する必要はありません。共有C++ロジックにより、单一コードベースを維持できます。

内部構造:動作の仕組み

技術的には、GPUPixelはハードウェアアクセラレーションを提供するOpenGL/ES標準に依存しています。C++11を使用することで、パフォーマンスと現代的な構文の優れたバランスを実現しています。

興味深いことに、このプロジェクトはのような巨人に触発されました。開発者はチェーン処理(あるフィルターの出力が次のフィルターの入力になる)の最良のアイデアを採用し、それを現代的なC++に移植しました。

コードでの実際の例

ライブラリの統合は簡単です。処理チェーンを作成する典型的なシナリオは次のとおりです:

// Создаем источник (например, камеру)
auto sourceCamera = GPUPixel::SourceCamera::create();

// Создаем бьюти-фильтр
auto beautyFilter = GPUPixel::BeautyFilter::create();

// Создаем таргет для отображения (View)
auto targetView = GPUPixel::TargetView::create();

// Соединяем их в цепочку
sourceCamera->addTarget(beautyFilter);
beautyFilter->addTarget(targetView);

// Запускаем!
sourceCamera->start();

この宣言的なアプローチにより、チェーンに新しいリンクを挿入するだけで、透かしオーバーレイや色補正などの新しい処理ステージを簡単に追加できます。

実践での応用例

当たり前のカメラアプリに加えて、GPUPixelは次のような用途に最適です:

Give Star

試してみる価値はあるか?

高品質な動画処理を迅速に実装することが目標で、各プラットフォームごとに個別にシェーダーを書く詳細に立ち入りたくない場合、GPUPixelは優れた選択です。このプロジェクトは積極的に開発されており、オープンソースのApache-2.0ライセンスがあり、Facebetterなどの企業からスポンサーのサポートを受けています。

もちろん、モバイル開発でC++を使用するにはNDKの設定やObjective-C++での作業が必要ですが、GPUPixelのクリーンなアーキテクチャと全プラットフォーム向けの готовые демо приложенияにより、参入障壁が大幅に下がります。

結論:これは、グラフィックプロセッサから最大のパフォーマンスを引き出したい人にとって、強力で軽量、そして重要なことに 무료인 도구입니다。

公式リポジトリでドキュメントとサンプルを探索できます:pixpark/GPUpixel。役立ったと思ったら、プロジェクトにスターを付けるのを忘れないでください!

関連プロジェクト