問題タブ [gpuimage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - GPUImageMovieWriterフレームpresentationTime
2つの入力が接続されたGPUImageColorDodgeBlend
フィルターがあります。
GPUImageVideoCamera
iPhoneビデオカメラからフレームを取得しているA。GPUImageMovie
ライブカメラフィードに重ねたい(MP4)ビデオファイルです。
次に、GPUImageColorDodgeBlend
は2つの出力に接続されます。
GPUImageImageView
動作中のブレンドのライブプレビューを提供するためのA。GPUImageMovieWriter
録画ボタンが押されたときにムービーをストレージに書き込むためのA。
これで、ビデオの録画が開始される前に、すべてが100%正常に機能します。はGPUImageVideo
ライブカメラビデオにうまくブレンドされており、問題や警告は報告されていません。
ただし、GPUImageMovieWriter
録音を開始すると、ランダムに問題が発生し始めます。約80〜90%の時間、GPUImageMovieWriter
完全に機能し、エラーや警告はなく、出力ビデオは正しく書き込まれます。
ただし、約10〜20%の時間(そして私が見る限り、これはかなりランダムです)、記録プロセス中に問題が発生しているように見えます(画面上のプレビューは引き続き正常に機能します)。
具体的には、何百ものProgram appending pixel buffer at time:
エラーが発生し始めます。
このエラーは、の- (void)newFrameReadyAtTime:(CMTime)frameTime atIndex:(NSInteger)textureIndex
メソッドが原因で発生しGPUImageWriter
ます。
frameTime
この問題は、このメソッドに報告される値の問題によって引き起こされます。
私が見ることができることから、問題は、ビデオカメラによって番号が付けられたフレームをライターが時々受信することによって引き起こされます( 1000000000のタイムスケールで64616612394291のような非常に高い時間値を持つ傾向があります)。ただし、ライターは、によって番号が付けられたフレームを取得することがあります。フレームの番号ははるかに低くなります(タイムスケールが30000の200200など)。GPUImageMovie
GPUImageWriter
フレーム値が増加している限りは問題ないようですが、フレーム値が減少すると、書き込みが停止し、Program appending pixel buffer at time:
エラーが発生します。
私はかなり一般的なことをしているようですが、これはバグとしてどこにも報告されていないので、私の質問は次のとおりです(これらのいずれかまたはすべてへの回答はありがたいです-必ずしもすべてが別々に順番に回答される必要はありません質問):
値はどこから来るのですか?ソースまたはソースに従って番号が付けられている
frameTime
かどうかが、なぜそれほど恣意的に見えるのですか?なぜそれがそれぞれの間で交互になるのですか?フレーム番号付けスキームはすべてのフレームにわたって均一であるべきではありませんか?frameTime
GPUImageVideoCamera
GPUImageMovie
この問題はsが増加しないことが原因であると考えるのは正しい
frameTime
ですか?...もしそうなら、なぜ100%の時間、画面上で問題なくs
GPUImageView
を受け入れて表示するのに、注文する必要があるのでしょうか。frameTime
GPUImageMovieWriter
...もしそうなら、どうすれば
frameTime
入ってくるが有効であることを確認できますか?if (frameTime.value < previousFrameTime.value) return;
ほとんどの場合、機能する数の少ないフレームをスキップするように追加してみました。残念ながら、これを設定すると、特定のポイントの後にすべてのフレームがスキップされるためplaysAtActualSpeed
、GPUImageMovie
これははるかに効果が低くなる傾向があります。
...またはおそらくこれはバグです。その場合はGitHubで報告する必要がありますが、ここで見落としていることがあるかどうかを知りたいと思いますframeTime
。
iphone - GPU 画像写真アプリのクラッシュ
画像効果に GPU 画像オープン ソース フレームワークを使用しています。問題は、画像にフィルターを定期的に適用しようとすると、アプリがメモリ警告を表示してからクラッシュすることです。
コードは次のとおりです。
この問題を解決するのを手伝ってください。ありがとう
ios - GPUImage は、選択した色を変更するカスタム フィルターを作成します
驚くべき GPU 画像フレームワークを使用して、いくつかの色ベクトルをユニフォームとして渡すカスタム フラグメント シェーダーを使用してカスタム フィルターを作成しようとしています。私は Quartz を使ってそれを作成しましたが、動作しますが、このフレームワークを使用して OpenGL の世界に最初の一歩を踏み出すので、GPU 処理を試してみたいと思います。
私が作ったフラグメントシェーダは問題なく動作しているようですが、出力に問題があります。ネズミイルカをデバッグするためのサンプルを投稿します
結果の画像には多くのアーティファクトがあります。画面上ではピクセルレートのように見え、ディスクに書き込むとうまく作成されません。ここにいくつかの画面があります。
最初の画像は開始画像、2 番目は iPhone 画面上のフィルタリングされた mage のスクリーンショット、3 番目はディスクに書き込まれたフィルタリングされた画像です。それを掘り下げてみると、テクセルとピクセルは同じものではないことを思い出したので、おそらくそれらを正しくマッピングしていません。掲載順位を 1:1 にしたいのですが、おそらく実現していません。
どうすればそれを達成できますか?
ありがとう、アンドレア
gpuimage - GPUイメージ-2つの異なるケースセットからの2つのGPUImageFilterGroupsを結合します
Brad LarsonのGPUImageを使用し、GoBackSpacesのDLCImagePickerControllerに基づいてiPhone用の写真アプリを作成しています(これまで多くのことを学ぶのに役立ちました)が、アプリに持たせたい機能の1つに固執しています。私には2つのケースがあります:
ケースA:「フィルムロール」を表す一連のケース(フィルターケース)ケースB:「カメラレンズ」を表す一連のケース(レンズケース)
それぞれの場合に、GPUImageFilterGroupsがあります。ユーザーがケースAからフィルターを選択してから、同じStaticPictureにケースBから別のフィルターを適用できるようにしたいと思います。つまり、ユーザーがケースAからフィルターを選択した後、StaticPictureは選択したフィルターに応じて変化し、その変更されたStaticPictureにケースBから別のフィルターを適用したいと思います。私はそれをいくつかの異なる方法で試しましたが、運がありませんでした。ケースBからフィルターを選択すると、StaticPictureが消えます。何かを保持する必要がありますか?どんな助けでも本当にありがたいです。これが私のコードです:
初心者からのこの質問についての説明や助けを事前に感謝します。
iphone - iOS GPUImage を使用してヒストグラムを生成するには?
https://github.com/luisespinoza/LEColorPickerプロジェクトで作業して、プロジェクト GPUImage (https://github.com/BradLarson/GPUImage) を使用して、任意の入力 UIImage からヒストグラム UIImage を生成しようとしています。
私が使用している現在のコードは次のとおりです。
問題は、histogram.png が入力画像ごとに黒い線になることです。
では、iOS GPUImage を使用してヒストグラム UIImage を生成する正しいコードはどのようになりますか?
ios - ビデオ ファイルの処理中にバックグラウンドに切り替えると GPUImage がクラッシュする
GPUImage
バックグラウンドへの切り替え中に問題が発生しています。
私のアプリでは、GPUImage
クラスを使用してビデオをキャプチャしません。ユーザーがロールからビデオを選択すると、アプリは 3 つの GPUImage フィルターを適用します。ビデオ処理がまだ進行中のときに、ユーザーがアプリをバックグラウンドに送信すると、問題が発生します。
アプリがバックグラウンドにある間は GPU にアクセスできないことがわかっているので、 : メソッドとメソッドapplicationWillResignActive
を呼び出します。問題は、このメソッドを呼び出しても、まだエラーが発生することです。GPUImageMovie
GPUImageMovieWriter endProcessing
gpus_ReturnNotêrmittedKillClient
これを修正する方法についてのアイデアはありますか?
前もって感謝します!
ios - GPUImage フレームワークによる畳み込み UIImage
GPUImage フレームワークの GPUImage3x3ConvolutionFilter を使用しようとしていますが、機能していません。
これは私のコードです。白い画像しか得られません。
私も変更しようとしています:
為に:
iphone - GPUImage の GPUImageOpacityFilter が期待どおりに動作せず、アルファ チャネルが変更されない
Overlay Blend
ストック画像の不透明度が100%未満のカメラフィードの出力でストック画像を作成しようとしています。GPUImageOpacityFilter
フィルタースタックに a を配置するだけで、すべてうまくいくと思いました。
- GPUImageVideoCamera -> MY_GPUImageOverlayBlendFilter
- GPUImagePicture -> GPUImageOpacityFilter (不透明度 0.1f) -> MY_GPUImageOverlayBlendFilter
- MY_GPUImageOverlayBlendFilter -> GPUImageView
しかし、その結果、GPUImagePicture の 0.1f アルファ バージョンが GPUImageVideoCamera にブレンドされたわけではなく、GPUImagePicture の色/コントラストが少し柔らかくなり、それがブレンドされました。だから私はいくつかの検索を行い、提案に基づいて GPUImageOpacity フィルターから UIImage を取得し、それを BlendFilterimageFromCurrentlyProcessedOutput
に送信しようとしました。
- GPUImagePicture -> MY_GPUImageOpacityFilter (不透明度 0.1f)
- [MY_GPUImageOpacityFilter imageFromCurrentlyProcessedOutput] -> MY_alphaedImage
- GPUImagePicture (MY_alphaedImage) -> MY_GPUImageOverlayBlendFilter
- GPUImageVideoCamera -> MY_GPUImageOverlayBlendFilter
- MY_GPUImageOverlayBlendFilter -> GPUImageView
そして、それは私が期待したとおりに機能しました。それで、なぜ私はしimageFromCurrentlyProcessedOutput
なければならないのですか?上記の 2 つのシナリオのコード スニペットを次に示します。
最初の1つ:
二つ目:
iphone - 紫外線フィルター効果シミュレーション
iOS アプリで紫外線効果をシミュレートする必要があります。
Histogram Filter -> Saturation -> Gray Scale をかけてみました。しかし、それはうまくいきませんでした。誰でもこれを機能させる方法を教えてもらえますか?
これにGPUImageを使用できますか? この効果を得るには、どのフィルターの組み合わせを適用する必要がありますか?
ios - GPUImage で 2 つ以上の入力テクスチャ フィルターを作成したいと考えています。しかし、私は黒い出力を得ました
GPUImage の GPUImageTwoInputFilter のような新しいフィルターを作りたいです。
これが私のコードです。IFFourInputFilter という名前の基本クラスで、おそらく GPUImageTwoInputFilter です。
IFAmaroFilter という名前のクラスは、IFFourInputFilter を拡張します。
フィルターを使用すると、黒い出力が得られました。以下のコード: