問題タブ [bgr]
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.
android - モバイル デバイスでの YUV (NV21) から BGR への変換 (ネイティブ コード)
Android と IOS で動作するモバイル アプリケーションを開発しています。ビデオストリームのリアルタイム処理が可能です。Android では、android.hardware.Camera.PreviewCallback.onPreviewFrame 経由でカメラの Preview-Videostream を取得します。NV21-Format はすべての Android デバイスでサポートされているはずですが、RGB はサポートされていません (または RGB565 のみ)。
主にパターン認識用の私のアルゴリズムでは、グレースケール画像と色情報が必要です。グレースケールは問題ありませんが、NV21 から BGR への色変換に時間がかかりすぎます。
説明したように、次の方法を使用して画像をキャプチャします。
アプリでは、カメラの onPreviewFrame-Handler をオーバーライドします。これは CameraPreviewFrameHandler.java で行われます。
次に、onFrame-Function はネイティブ関数を呼び出します。この関数は、Java オブジェクトからデータをローカル参照としてフェッチします。次に、これは unsigned char* バイトストリームに変換され、OpenCV を使用して NV21 から BGR に変換する次の c++ 関数を呼び出します。
コード内のコメントから結論付けられるように、私はすでに変換をプロファイリングしましたが、Nexus 4 で約 30 ミリ秒かかることが判明しました。(私のプロファイリング方法は再確認され、リアルタイム測定のために適切に機能しています)
現在、NV21 から BGR へのこの色変換のより高速な実装を必死に見つけようとしています。これは私がすでに行ったことです。
- このトピックで提供されているコード「convertYUV420_NV21toRGB8888」を C++ に採用(変換時間の倍数)
- 整数演算のみを使用するようにコードを 1 から変更しました (openCV-Solution の 2 倍の変換時間)
- 他のいくつかの実装を参照しましたが、すべて同様の変換時間でした
- OpenCV-Implementation を確認すると、パフォーマンスを得るために多くのビットシフトが使用されます。自力では上手くいかないと思います
提案がありますか、良い実装を知っていますか、またはこの問題を回避するためのまったく異なる方法がありますか? どうにかして Android カメラから RGB/BGR フレームをキャプチャする必要があり、できるだけ多くの Android デバイスで動作するはずです。
返信ありがとうございます。
ios - YUV色空間でCMSampleBufferRefをUIImageに変換しますか?
で作業しており、に変換しAVCaptureVideoDataOutput
たいと考えています。UIImageView に表示されない CMSampleBufferRef から作成されたこの UIImage のように、多くの答えは同じです。および複数のプレビューを含む AVCaptureSessionCMSampleBufferRef
UIImage
VideoDataOutput 色空間を BGRA に設定すると正常に動作します (この回答CGBitmapContextCreateImage errorにクレジットされています) 。
上記の videoSettings がないと、次のエラーが表示されます
Brad とCodo が AVCaptureSession に起因する CMSampleBuffer から Y コンポーネントを取得する方法で述べているように、YUV (デフォルトの AVCaptureSession 色空間) から BGRA への変換オーバーヘッドがあるため、BGRA での作業は適切な選択ではありません。
YUV色空間に変換CMSampleBufferRef
して操作する方法はありますか?UIImage
c - Intel IPP を使用して BGR (24 ビット) イメージをミラーリングする
次のコードを使用して、生の (画像ヘッダーなしの) BGR 画像を 1 ピクセルあたり 8 ビットでミラーリングしようとしています。
画像サイズは640×360です。ピッチ_s = ピッチ_d = 幅 = 640.何が問題でしょうか?
ios - iOS: OpenCV 赤色範囲
OpenCV ライブラリを使用して、画像内の赤色を囲みます。私はグーグルで多くの質問を見てきましたが、誰も助けてくれませんでした。私のコードは以下の通りです:
問題: このコードは、画像に赤と白の色しかない場合に完全に機能し、赤色をうまく囲みます。ただし、複数の色、特に暗い色が関係している場合、色の検出は失敗します。赤色のみを検出する正確な範囲が必要です。ありがとう
java - バイト値の平均
画像の (平均) グレースケールを作成しようとしていますが、各ピクセルの値を取得していないようです。平均を集計するときに正しい計算をしていないと思いますが、何が間違っているのかわかりません。
型変換で見逃したものはありますか?
編集:
入力は次のとおりです。ここで、byte[] データは BufferedImage からの生データであり、この場合は alphaRaster を持っていません。
c++ - BGR 値を指定して全体的な色を決定する式はありますか? (OpenCV および C++)
C++ と OpenCV を使用して、画像内のピクセルの色を検出し、それがどの色範囲にあるかを判断し、それを一般的な色に置き換える関数を作成しています。たとえば、緑の範囲が濃い緑から明るい緑の場合、プログラムはまだ緑であると判断し、単純な緑に置き換えて、出力画像を非常に単純な外観にします。すべてが設定されていますが、各範囲の特性を定義するのに問題があり、BGR 値を指定してピクセルの全体的な色を決定できる式を誰かが知っているかどうか興味がありました。そうでない場合は、多くの実験を行って自分で作成する必要がありますが、何かが既に存在する場合は時間を節約できます. 私は多くの研究を行ってきましたが、これまでのところ何も見つかりませんでした。