知識前に準備1
各色の範囲に対応
図2は、主にOpenCVのAPIを使用しました
/ ** @briefは別の色空間から画像を変換します。
@param SRC入力画像:8ビットの符号なし16ビットの符号なし(CV_16UC ...)、または単精度
浮動小数点。
srcと同じ大きさと深さの@param DST出力画像。
@paramコード色空間変換コード(#ColorConversionCodesを参照)。
宛先画像におけるチャネルの@param dstCn数。パラメータが0である場合、多数の
チャネルは、srcおよびコードから自動的に導出されます。
@see @ref imgproc_color_conversions
* /
CV_EXPORTS_W ボイド cvtColor(InputArray SRC、OutputArray DST、INTコード、INT dstCn = 0)。
/ ** @briefチェックアレイ要素が他の二つの配列の要素の間にある場合。
SRC(I)の範囲内である場合には、DST(I)は、(すべて1 -bits)255に設定されている
特記の1D、2D、3D、...ボックス、0。
下部及び/又は上部境界パラメータがスカラーである場合、インデックス
上記式中lowerbとupperbで(I)は省略されるべきです。
SRC最初の入力配列を@param。
@paramのlowerb含め下限配列またはスカラー。
包括上限配列またはスカラーupperb @param。
srcとCV_8U型と同じサイズの@param DST出力アレイ。
* /
CV_EXPORTS_W 無効INRANGE(InputArray SRC、InputArray lowerb、 InputArray upperb、OutputArray DST)。
/ ** @briefは、正規化されたボックスフィルタを用いて画像をぼかし。
機能はカーネルを使用して、画像を滑らかに:
@param SRC入力画像。それは独立して処理されたチャネル、任意の数を有することができるが、
深さがCV_8U、CV_16U、CV_16S、CV_32F又はCV_64Fであるべきです。
srcと同じサイズおよびタイプの@param DST出力画像。
@paramはカーネルサイズをぼかしksize。
@paramアンカーアンカーポイント。デフォルト値のポイント(-1、-1)アンカーがカーネルであることを意味し
、中心。
画像の外側の画素を推定するために使用@param borderType境界モード、#BorderTypes参照
@sa boxFilter、bilateralFilter、GaussianBlur、medianBlurを
* /
CV_EXPORTS_W 空ぼかし(InputArray SRC、OutputArray DST、 サイズksize、ポイントアンカー =ポイント( - 1、 - 1 )、 int型 borderType = BORDER_DEFAULT);
/ ** @briefは、メディアンフィルタを使用して画像をぼかし。
メディアンフィルタは、境界ピクセルに対処するために内部#BORDER_REPLICATEを使用しています@note、#BorderTypesを参照してください
@paramのsrc入力1-、3-、または4チャンネル画像。ksizeは3または5である場合、画像の深さであるべき
CV_8U、CV_16U、又はCV_32F、大きな開口サイズのために、それだけCV_8Uすることができます。
srcと同じサイズおよびタイプの@paramのDST宛先アレイ。
@param ksize絞りリニアサイズ。それは例えば、奇数および1以上でなければなりません:3、5、7 ...
@sa bilateralFilterは、boxFilterをぼかし、GaussianBlur
* /
CV_EXPORTS_W 無効 medianBlur(InputArray SRC、OutputArray DST、int型 ksize)。
3プログラムコード
#include " opencv2の\のopencv.hpp " の#include <iostreamの> 使用して名前空間STD; 使用名前空間CV; int型のmain(int型 ARGC、チャー ** ARGV) { SRCマット =関数imread(" G:program_wwx \\ \\ \\ CVworkstudyをYanxishe ZhaiZhigang140 \\ lena.jpg \\ 140時間" ); IF (src.empty()) { のprintf(" N- \ ...画像をロードできませんでした" ); を返す - 1。; } // 色空間変換 マットyuvImg、hsvImg、ycrcbImg。 cvtColor(SRC、yuvImg、CV_BGR2YUV)。 cvtColor(SRC、hsvImg、CV_BGR2HSV)。 cvtColor(SRC、ycrcbImg、CV_BGR2YCrCb)。 // 图像显示 関数imshow(" YUV " 、yuvImg)。 関数imshow(" HSV " 、hsvImg)。 関数imshow(" のYCrCb " 、ycrcbImg)。 マットgetColorImg、getMask、getMask1。 getColorImg =関数imread(" G:\\ CVworkstudy \\ program_wwx \\研习社140课时\\ ZhaiZhigang140 \\ myPhoto.jpg " )。 // 関数imshow( "MyPhoto"、getColorImg)。 cvtColor(getColorImg、getColorImg、CV_BGR2HSV); // 色抽出HSV色空間を変換する必要がある 。// つまり、DST(I)は(すべての-bits 1。)255に設定されているSRC(I)はザ・は内にある場合 // 指定。1D、2D、3D、...と、そうでなければ0ボックス INRANGE(getColorImg、スカラー(100、43で、46れている)、スカラー(124、255、255)、getMask); // 青色範囲では、255に変換されます。 、他方は0である ((getMask、getMask1、サイズブラー5。 、5。 )); // 平均値ぼかしフィルタは、あろうエッジ 関数imshow(" getMask1 "、getMask1)を、 medianBlur(getMask、getMask、5); // エッジプロファイル小さなにメディアンフィルタ効果 関数imshow(" GetMask " 、getMask); waitKeyは(0 ); 戻り 0 ; }
4つの実行結果
5拡張および注意事項
ヌル