OpenCV公式ドキュメント調査(1)Mat

まず自己紹介をさせていただきますと、私は大学3年生で、もともとJ2EEを習得しており、SpringMVC+Spring+Hibernateフレームワークが得意です。今年はより高度な勉強をする時間をとりたかったので、画像処理を選択しました。今日はブログを書く初日で、これが2回目のブログ投稿です。みんなも応援してくれると嬉しいです!


コピー演算子は、データ自体
ではなく、ヘッダーと大きな行列へのポインターのみをコピーします


Mat A, C;   // creates just the header parts
A = imread(argv[1], CV _ LOAD _ IMAGE _ COLOR);  // here we’ll know the method used (allocate matrix)
Mat B(A);   // Use the copy constructor
C = A;   // Assignment operator

上記の 3 つのオブジェクトはすべて同じ行列を指します。

行列自体もコピーしたい場合があるため、OpenCV には clone() 関数と copyTo() 関数が用意されています。
行列データをコピーしたい場合は、 clone() または copyTo() を使用します。


Mat F = A.clone();
Mat G;
A.copyTo(G);

私たちの目は似たものを使用するため、RGB が最も一般的ですが、OpenCV 表示システムは BGR カラーを使用することに注意してください。OpenCV で使用される色空間は BGR であり、
格納順序が RGB とは異なります。


色空間削減 色空間削減

Inew = Iold/n*n uchar table[256]; for (int i = 0; i < 256; ++i) table[i] = (uchar)(divideWith*(i/divideWith)); ** 最初にテーブルを生成し、クエリを通じて値を割り当てると効率が向上します。** MatIterator _ it, end; for( it = I.begin(), end = I.end(); it != end; ++it) { ( * it)[0] = table[( * it)[0]]; ( * it)[1] = table[( * it)[1]]; ( * it)[2] = table[( * it)[2]]; } OpenCV は、同じ効果を実現する LUT() を提供します。 Mat lookUpTable(1, 256, CV _ 8U); uchar * p = lookUpTable.data; for( int i = 0; i < 256; ++i) p[i] = table[i];

LUT(I, ルックアップテーブル, J); //I は入力画像、J は出力画像です


実行時間を取得する

double t = (double)getTickCount(); // do something ... t = ((double)getTickCount() - t)/getTickFrequency(); cout << "Times passed in seconds: " << t << endl;

おすすめ

転載: blog.csdn.net/CanvaChen/article/details/52549828