画像処理---「画素インデックス画像取得、処理画素範囲、適用マスク」

画像処理---「ピクチャ・マスク処理 - >画像の輝度を増加させます。」

  学習:マスクの画像について、(1)画素インデックス画像を取得する方法、(2)処理の画素範囲、(3)アプリケーション

/ * **************************** ************************************** 
著者:@ WP20190612 
環境:VS2010 + OpenCV2.4.3 機能:---画像のコントラストを向上させるために、マスキング操作 の説明: 知識1:画像取得画素インデックス CV_Assert(myImage.depth()== CV_8U)を、 Mat.ptr <UCHAR>(I = 0 INT);ピクセルの行列を求めますポインタ、インデックスiは0から数え、最初の数行を示し、 *現在= myImage.ptr <UCHAR UCHAR CONST >(行); 現在の行へのポインタを取得し 、P(行、列)=現在 [COL]; 現在の画素pを取得します(行、列)の画素値の 明確でなければならない点---ピクセルインデックスが調整されてもよい、そしてここで、調整しない 知識2: 画素範囲処理saturate_cast <UCHAR>を、0〜255の範囲で、そのRGB値を確保します。 saturate_cast <UCHAR>は、( - 100)戻り0; ; saturate_cast <UCHAR>(288)は255を返し 、saturate_cast <UCHAR>(100)100返さ 知識3。 ---マスキング演算は画像のコントラストを向上させる **************************************** **********************************************
* / // -------------------------------機能:画像マスク動作を実現するために関数を記述するために-------- ------------ する#include <opencv2 / opencv.hpp> の#include <iostreamの> 書式#include <math.h>の使用して名前空間CV; int型のmain(int型のargc、char型 ** ARGV) // argumentssパラメータ、コマンドライン引数の数はARGC; { SRC、DSTをマット; SRC =関数imread(" D:\\ \\ test001.png example_opencv work_VS2010 \\ " ); IF(!src.data) { のprintf("...のn \でしイメージをロードしませ); リターン - 1。 ; // この機能が正常に完了したことを返すには0であり、-1を返します。この関数は完了していない } namedWindow(入力画像「CV_WINDOW_AUTOSIZE); 関数imshow(入力画像、SRC); // ---------------------------- -------------画像処理を開始-------------------------- // INT COLS = src.cols; // 単一チャネルのint COLS =(src.cols- 。1)* src.channels(); // 画像の幅行数---マルチチャンネル画像INT offsetX src.channels =(); // チャネルの数は、 int型の行= src.rowsと、 DST =マット::ゼロ(src.size()、src.type()); //は、原画像マトリックスの均一なマトリクス・サイズを初期化する、保存するための処理0であります画像 // 関数処理マスキング開始 INTの行=を1、行<(rows- 1。);行++ { // 取得した画素位置ポインタ CONST UCHAR *現在= src.ptr <UCHAR>(行)。 // 現在のピクセル位置ポインタ CONST UCHAR * =前回src.ptr <UCHAR>(行優先1); // 現在のピクセル位置ポインタの画素前 CONST UCHAR *次src.ptr = <UCHAR>(行+ 1)。 //現在のカーソルの画素位置の画素後 UCHARの *出力= dst.ptr <UCHAR> 行) のためにINT COL = offsetX; COL <COLS; COL ++ { // 。OUTPUT [COL] =現在5 * [COL] - (現在[COL-offsetX] +現在[COL + offsetX] +前の[COL]次に+ [COL]); // グリッチ効果 出力[COL] = saturate_cast <UCHAR>(5 *現在[COL] - (現在[ offsetX-COL] +現在[COL + offsetX] +前の[COL]次に+ [COL])); // バリ言及効果 } } namedWindow(" マスク後の画像" 、CV_WINDOW_AUTOSIZE); 関数imshowを("イメージの後のマスク"DSTを); // 画像保存 関数imwriteを(" D:\\ \\ test001_result.png example_opencv work_VS2010 \\ 、DST); // -------------- --------------エンド画像処理--------------------------------- ------ waitKey(0 ); 戻り 0 ; }

/***************************************************************************************
作者:@WP20190612
功能:掩膜操作---提高图像的对比度 说明: 借用OpenCV中的API---filter2D() 掩膜函数进行 **************************************************************************************
*/ //-------------------------------功能:filter2D() 进行掩膜处理-------------------- #include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespace cv; int main (int argc, char** argv) //argumentss 参数;argc命令行参数个数; { Mat src, dst; src = imread("D:\\work_VS2010\\example_opencv\\test001.png"); if (!src.data) { printf("could not load image ...\n"); return -1; //return 0 成功完成本函数;return -1 未能完成本函数 } namedWindow("input image", CV_WINDOW_AUTOSIZE); imshow("input image", src); //----------------------------开始处理图像--------------------------------------- //使用filter2D() 掩膜函数 Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0); filter2D(src, dst, src.depth(), kernel); namedWindow("the image after mask", CV_WINDOW_AUTOSIZE ); imshow("the image after mask",dst); //保存图像 imwrite("D:\\work_VS2010\\example_opencv\\test001_result.png", dst); //----------------------------结束处理图像--------------------------------------- waitKey(0); return 0; }

 

おすすめ

転載: www.cnblogs.com/carle-09/p/11027863.html