OpenCV成長への道(3):PhotoShopの魔法の杖ツールを真似してみる
この記事のテーマは、実際には色選択プログラムを使用した画像の色空間の変換であり、OpenCV の色変換関数の使用法といくつかの注意事項について説明します。
1. いくつかの一般的な色空間:
RGB 色空間: RGB は、色を生成するためのさまざまな「光」の比率を記述するため、加法混色手法を使用します。暗闇から始まり、光が重なり合い、色を生み出します。 RGB は、赤、緑、青の光の値を表します。デジタル画像の保存には通常、RGB モードが使用されます。OpenCV の 3 つのチャネルの保存順序は BGR であることに注意してください。
HSV、HSI: これら 2 つのカラー形式は、人間の目の色の区別に基づいて定義されます。H (色相) は色相を表し、S (彩度) は彩度を表し、V (値) は明るさを表し、I (強度) は明るさを表します。 。
Lab 空間: モデル内の均一な変化は、知覚される色の均一な変化に対応するため、Lab を色空間内の点として想像できます。隣接する点が近ければ近いほど、2 つの色は近づきます。そのため、ラボ スペースは 2 つの色の類似性を測定するためによく使用されます。
色空間の詳細については、http://en.wikipedia.org/wiki/Color_space
2. OpenCV での色空間変換
OpenCV は、cvtColor 関数を使用して画像の色変換を完了します。 cvtColor は opencv2/imgproc/imgproc.hpp ヘッダー ファイルで定義されており、その C++ インターフェイスは次のとおりです:
void cvtColor(InputArray src, OutputArray dst, int code, int ) dstCn = 0 )
src: 入力画像。
dst: 出力画像。
コード: CV_BGR2Lab、CV_BGR2HSV、CV_HSV2BGR、CV_BGR2RGB などの色変換タイプ。
dstCn: 出力画像のチャンネル番号。デフォルトが 0 の場合、入力画像のチャンネル数を意味します。
BGR から Lab に画像を変換します: cvtColor(image,image,CV_BGR2Lab)
3. シンプルな魔法の杖プログラム
まず colorDetect クラスを定義します:
class colorDetect{private: int minDist; //minium acceptable distance Vec3b target;//target color; Mat result; //the resultpublic: colorDetect(); void SetMinDistance(int dist); void SetTargetColor(uchar red,uchar green,uchar blue); void SetTargetColor(Vec3b color); //set the target color Mat process(const Mat& image); //main process};
minDist は距離を制限するために定義したしきい値です。 2 つの色の間の値は、PhotoShop の魔法の杖ツールのしきい値に相当します。
target はシードカラーに相当するターゲットカラーです。 result は、ストレージ処理によって得られた結果です。
processはメインの処理プログラムです。 processの中身を見てみましょう。
Mat colorDetect::process(const Mat& image) { Mat ImageLab=image.clone(); result.create(image.rows,image.cols,CV_8U); //将image转换为Lab格式存储在ImageLab中 cvtColor(image,ImageLab,CV_BGR2Lab); //将目标颜色由BGR转换为Lab Mat temp(1,1,CV_8UC3); temp.at<Vec3b>(0,0)=target;//创建了一张1*1的临时图像并用目标颜色填充 cvtColor(temp,temp,CV_BGR2Lab); target=temp.at<Vec3b>(0,0);//再从临时图像的Lab格式中取出目标颜色 // 创建处理用的迭代器 Mat_<Vec3b>::iterator it=ImageLab.begin<Vec3b>(); Mat_<Vec3b>::iterator itend=ImageLab.end<Vec3b>(); Mat_<uchar>::iterator itout=result.begin<uchar>(); while(it!=itend) { //两个颜色值之间距离的计算 int dist=static_cast<int>(norm<int,3>(Vec3i((*it)[0]-target[0], (*it)[1]-target[1],(*it)[2]-target[2]))); if(dist<minDist) (*itout)=255; else (*itout)=0; it++; itout++; } return result; }
プログラムでは特に注意が必要な点が 2 つあります:
1. 画像を Lab 空間に変換した後、一時的な画像を作成することでターゲットの色も変換する必要があります。
2. ノルム関数は、2 つの色の間の距離を決定するために使用されます。その演算は、norm
次に、 Vec3i((*it)[0]-target[0],(*it)[1]-target[1],(*it)[2]-target[2] ) が置き換えられるかどうかを検討する価値があります。 by Vec3i((*it)-target)?答えは「ノー」です。なぜなら、(*it)-target は実際の操作中に減算結果の型を自動的に制限するからです。
次のようにターゲットの色としきい値を設定した後、サンプル効果を取得できます:
cdet.SetTargetColor(150,150,150);
cdet.SetMinDistance(50);
その他の OpenCV 成長パス (3 ): 記事用PhotoShop の魔法の杖ツールの模倣に関連して、PHP 中国語 Web サイトに注意してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、ソーシャルメディアグラフィックスのPhotoshop、セットアップ、設計ツール、最適化技術をカバーすることを使用して詳細に説明しています。グラフィック作成の効率と品質を強調しています。

PSの「読み込み」の問題は、リソースアクセスまたは処理の問題によって引き起こされます。ハードディスクの読み取り速度は遅いか悪いです。CrystaldiskInfoを使用して、ハードディスクの健康を確認し、問題のあるハードディスクを置き換えます。不十分なメモリ:高解像度の画像と複雑な層処理に対するPSのニーズを満たすためのメモリをアップグレードします。グラフィックカードドライバーは時代遅れまたは破損しています:ドライバーを更新して、PSとグラフィックスカードの間の通信を最適化します。ファイルパスが長すぎるか、ファイル名に特殊文字があります。短いパスを使用して特殊文字を避けます。 PS独自の問題:PSインストーラーを再インストールまたは修理します。

記事では、ファイルのサイズと解像度に焦点を当てたPhotoshopを使用して、Webの画像の最適化について説明します。主な問題は、品質と負荷時間のバランスをとることです。

この記事は、Photoshopで印刷するための画像の準備を導き、解像度、色プロファイル、シャープネスに焦点を当てています。 300 PPIおよびCMYKプロファイルが高品質のプリントに不可欠であると主張しています。

記事では、既存のGIFにフレームを追加するなど、PhotoshopでアニメーションGIFの作成と最適化について説明します。主な焦点は、品質とファイルサイズのバランスをとることです。

この記事では、ビデオ編集にPhotoshopを使用する方法、ビデオのインポート、編集、エクスポートの手順の詳細、およびタイムラインパネル、ビデオレイヤー、エフェクトなどの重要な機能の強調表示について説明します。

PSをPDFとしてエクスポートする際のよくある質問とソリューション:フォント埋め込み問題:「フォント」オプションを確認し、「埋め込み」を選択するか、フォントを曲線(パス)に変換します。色偏差の問題:ファイルをCMYKモードに変換し、色を調整します。 RGBで直接エクスポートするには、プレビューと色の逸脱のための心理的な準備が必要です。解像度とファイルサイズの問題:実際の条件に応じて解像度を選択するか、圧縮オプションを使用してファイルサイズを最適化します。特殊効果の問題:エクスポートする前にレイヤーをマージ(フラットン)するか、長所と短所を比較検討します。

Slow Photoshopの起動の問題を解決するには、次のような多面的なアプローチが必要です。ハードウェアのアップグレード(メモリ、ソリッドステートドライブ、CPU)。時代遅れまたは互換性のないプラグインのアンインストール。システムのゴミと過剰な背景プログラムを定期的にクリーンアップします。無関係なプログラムを慎重に閉鎖する。起動中に多数のファイルを開くことを避けます。
