Opencv Matのいくつかの初期化方式
59238 ワード
転載先:https://blog.csdn.net/jeakon/article/details/41942197
参考記事:http://www.cnblogs.com/tornadomeet/archive/2012/07/19/2599376.html
実験説明:(引用)
本文は主にopencv 2.0バージョン後に現れたMat矩形クラスについて述べ,主にopencvがdocフォルダの下にあるtutiol教材を参照する.今回の実験ではMatを使うと以下の点に特に注意が必要だと思います(コードに反映されています):
1.create関数を使用して、メモリ内のMatデータのレイアウトを変更します.
2.マルチチャネルデータはMatにおいても1つの要素の位置を占めていることに注意してください.
3.多次元マットの作成方法を習得する.
4.Mat行列が比較的小さい場合、直接値を与える方法、すなわちMat_を学ぶ.
5.Matマトリクスの内容を端末に出力する際のいくつかの一般的なフォーマットを把握する.
6.vectorが1次元であればMatに変換して出力する必要があり、多次元であれば直接出力することができ、例えばvectorに格納されている点であれば注意してください.
参考記事:http://www.cnblogs.com/tornadomeet/archive/2012/07/19/2599376.html
実験説明:(引用)
本文は主にopencv 2.0バージョン後に現れたMat矩形クラスについて述べ,主にopencvがdocフォルダの下にあるtutiol教材を参照する.今回の実験ではMatを使うと以下の点に特に注意が必要だと思います(コードに反映されています):
1.create関数を使用して、メモリ内のMatデータのレイアウトを変更します.
2.マルチチャネルデータはMatにおいても1つの要素の位置を占めていることに注意してください.
3.多次元マットの作成方法を習得する.
4.Mat行列が比較的小さい場合、直接値を与える方法、すなわちMat_を学ぶ.
5.Matマトリクスの内容を端末に出力する際のいくつかの一般的なフォーマットを把握する.
6.vectorが1次元であればMatに変換して出力する必要があり、多次元であれば直接出力することができ、例えばvectorに格納されている点であれば注意してください.
-
#include
-
#include
-
#include
-
#include
-
-
using
namespace
std;
-
using
namespace cv;
-
-
int demo_Mat()
-
{
-
int next_num =
1;
-
char tmp;
-
while(next_num<
7)
-
{
-
cout<<
"-------- "<
" --------"<<
endl;
-
waitKey(
0);
-
-
switch (next_num)
-
{
-
case
1:
-
{
-
Mat M( 2, 2, CV_8UC3, Scalar(0,255,0) );
// 2*6 , 3 。
-
cout<<
"create by using the constructor..."<<
endl;
-
cout<<
"M =
"<endl;
-
-
M.create(
4,
4, CV_8UC(
2));
// 2 2
-
cout<<
"create by using create function..."<<
endl;
-
cout<<
"M =
"<endl;
-
break;
-
}
// case , ,
-
case
2:
-
{
-
int sz[
3] = {
2,
2,
2};
-
Mat L( 3, sz, CV_8UC(1), Scalar::all(0) );
-
cout<<
"create multidimensional matrix..."<<
endl;
-
// cout<
-
break;
-
}
-
case
3:
-
{
-
Mat E = Mat::eye(
4,
4, CV_64F);
-
Mat O = Mat::ones(
2,
3, CV_32F);
-
Mat Z = Mat::zeros(
3,
3, CV_8UC1);
-
cout<<
"using matlab stytle..."<<
endl;
-
cout<<
"E =
"<endl;
-
cout<<
"O =
"<endl;
-
cout<<
"Z =
"<endl;
-
break;
-
}
-
case
4:
-
{
-
Mat C =(Mat_<
double>(
3,
3)<<
0,
-1,
0,
-1,
5,
-1,
0,
-1,
0);
//
-
Mat row_clone = C.row(
1).clone();
-
cout<<
"create 3*3 double-precision identity matrix..."<<
endl;
-
cout<<
"C =
"<endl;
-
cout<<
"row_clone = "<
endl;
-
break;
-
}
-
case
5:
-
{
-
Mat R = Mat(
3,
2, CV_8UC3 );
-
randu( R, Scalar::all(
0), Scalar::all(
255) );
-
cout<<
"fill a matrix with rand numbers..."<<
endl;
-
cout<<
"R (default) = "<
endl;
-
cout<<
"demonstrate the output formating options..."<<
endl;
-
cout<<
"R (python) =
"<"python")<<
endl;
-
cout<<
"R (numpy) =
"<"numpy")<<
endl;
//numpy python
-
cout<<
"R (csv) =
"<"csv")<<
endl;
//csv,
-
cout<<
"R (c) =
" <"C")<<
endl;
-
break;
-
}
-
case
6:
-
{
-
cout<<
"the point format output..."<<
endl;
-
-
Point2f P1(5, 1);
-
cout<<
"Point (2D) = "<
endl;
-
-
Point3f P2(4, 5, 6);
-
cout<<
"Point (3D) = "<
endl;
-
-
vector<
float>v;
-
v.push_back( (
float)CV_PI);
-
v.push_back(
2 );
//push_back
-
v.push_back(
3.01f );
-
cout<<
"vector of float: = "<
endl;
//vector , mat
-
-
int N =
20;
-
vector
vPoints(N);
//vector ,
-
for(
size_t E =
0; E < vPoints.size(); ++E )
//size_t unsigned int
-
vPoints[E] = Point2f((
float)(E*
5), (
float)(E%
7));
-
cout<<
"vPoints[] =
"<endl;
// vector , vector
-
// ( 2 )Mat
-
break;
-
}
-
default:
-
break;
-
}
-
next_num++;
-
}
-
return
0;
-
}
-
: