opencv2-基础图像容器Mat类的使用

来源:互联网 发布:js鼠标移出div事件 编辑:程序博客网 时间:2024/05/16 15:02
opencv2-基础图像容器Mat类的使用
//-----------------------------【ShowHelpText( )函数】--------------------------------------
// 描述:输出帮助信息
//-------------------------------------------------------------------------------------------------
static void ShowHelpText()
{
//输出欢迎信息和OpenCV版本
printf("\n\n\t\t\t非常感谢购买《OpenCV3编程入门》一书!\n");
printf("\n\n\t\t\t此为本书OpenCV2版的第19个配套示例程序\n");
printf("\n\n\t\t\t   当前使用的OpenCV版本为:" CV_VERSION );
printf("\n\n  ----------------------------------------------------------------------------\n");
//输出一些帮助信息
printf("\n\n\n\t欢迎来到【基本图像容器-Mat类】示例程序~\n\n");
printf("\n\n\t程序说明:\n\n\t此示例程序用于演示Mat类的格式化输出功能,输出风格可为:");
printf("\n\n\n\t【1】OpenCV默认风格");
printf("\n\n\t【2】Python风格");
printf("\n\n\t【3】逗号分隔风格");
printf("\n\n\t【4】Numpy风格");
printf("\n\n\t【5】C语言风格\n\n");
printf("\n  --------------------------------------------------------------------------\n");
}
//--------------------------------------【main( )函数】-----------------------------------------
//          描述:控制台应用程序的入口函数,我们的程序从这里开始执行
//-----------------------------------------------------------------------------------------------
int main(int,char**)
{
//改变控制台的前景色和背景色
system("color 8F"); 
//显示帮助文字
ShowHelpText();
Mat I = Mat::eye(4, 4, CV_64F);
I.at<double>(1,1) = CV_PI;
cout << "\nI = " << I << ";\n" << endl;
Mat r = Mat(10, 3, CV_8UC3);
randu(r, Scalar::all(0), Scalar::all(255));
cout << "r (OpenCV默认风格) = " << r << ";" << endl << endl;
cout << "r (Python风格) = " << format(r,"python") << ";" << endl << endl;
cout << "r (Numpy风格) = " << format(r,"numpy") << ";" << endl << endl;
cout << "r (逗号分隔风格) = " << format(r,"csv") << ";" << endl<< endl;
cout << "r (C语言风格) = " << format(r,"C") << ";" << endl << endl;
Point2f p(6, 2);
cout << "【2维点】p = " << p << ";\n" << endl;
Point3f p3f(8, 2, 0);
cout << "【3维点】p3f = " << p3f << ";\n" << endl;
vector<float> v;
v.push_back(3);
v.push_back(5);
v.push_back(7);
cout << "【基于Mat的vector】shortvec = " << Mat(v) << ";\n"<<endl;
vector<Point2f> points(20);
for (size_t i = 0; i < points.size(); ++i)
points[i] = Point2f((float)(i * 5), (float)(i % 7));
cout << "【二维点向量】points = " << points<<";";
getchar();//按任意键退出
return 0;

}


(1)system函数

_CRTIMP int __cdecl system(_In_opt_z_ const char * _Command);


Windows 操作系统的系统文件夹。是操作系统的中枢。文件夹中包含了大量的用于 Windows 的文件。 这里主要用于存储 DLL 文件, 控制面板小程序(.CPL), 设备驱动 (.drv), 帮助文件 (.hlp 和 .cnt), MS-DOS 工具 (.com), 语言支持文件 (.nls), 屏幕保护 (.scr), 安装信息文件 (.inf), 以及其它用于支持, 配置, 或操作的文件。若带有.exe的,建议删除。system.exe是netcontroller木马病毒生成的文件,出现在c:\windows目录下,建议将其删除。但要与系统的system进程区分开来。system进程是没有exe的。

进程文件:System
  进程名:System
  描述:System - 系统 体制 计划
  系统里确实有system这个进程,但注意,它并不是system.exe,可能是木马伪装而成的,还是先查查木马吧
  

进程文件:system.exe
  进程名称:system.exe
  描述:
  system.exe是netcontroller木马病毒生成的文件,出现在c:\windows目录下,建议将其删除。但要系统的system进程区分开来。system进程是没有.exe的,其信息可见:http://www.pctutu.com/tasklist/system.html


如果你用的是xp系统,这个进程在“任务管理器”中就结束不掉,[1]结束掉的进程说明这个进程不能对系统造成直接危害不过,用其它软件可能能强制结束,但这样会造成蓝屏等现象。
如果你是vista系统,结束掉之后,马上就会蓝屏。这个是系统的进程,是内存运行的!如果关掉会有可能出现两种情况!
一:蓝屏。
二:出现那个说你是非法程序的对话框。
总的来说就是系统有可能崩溃!
system是一个系统正常进程,通常无毒,属于system权限
系统中还有一个没有扩展名的system文件,是系统注册表文件,位置:
%systemroot%\system32\config\system



(2)static MatExpr eye(int rows, int cols, int type);



(3)randu:用指定区间(low,high)里面的随机数来填充数组。

//! fills array with uniformly-distributed random numbers from the range [low, high)

CV_EXPORTS_W void randu(InputOutputArray dst, InputArray low, InputArray high);



(4)二维点类型函数:

Point_(_Tp _x, _Tp _y);

typedef Point_<float>  Point2f;

Point2f  p(6, 2);


三维点类型函数:

Point3_(_Tp _x, _Tp _y, _Tp _z);

typedef Point3_<float> Point3f;

Point3f p3f(8, 2, 0);



(5)vector<float> v;
v.push_back(3);
v.push_back(5);
v.push_back(7);

建立一个float类型数据的容器v,往里面填充数据3,5,7,。



(6)往容器里面填充二维点向量。

vector<Point2f> points(20);
for (size_t i = 0; i < points.size(); ++i)
points[i] = Point2f((float)(i * 5), (float)(i % 7));
cout << "【二维点向量】points = " << points<<";";




0 0
原创粉丝点击