简介
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
在计算机视觉项目的开发中,OpenCV作为较大众的开源库,拥有了丰富的常用图像处理函数库。主要应用到下面的这些领域:
1、人机互动 ;2、物体识别 ;3、图像分割 ;4、人脸识别;5、动作识别;6、运动跟踪 ;7、机器人;8、运动分析;9、机器视觉 ;10、结构分析 ;11、汽车安全驾驶
计算机视觉作为人工只能最火的一个方向,而Python作为人工能的工具语言,毫不意外的,opencv提供了opencv-python第三方包,这个包里包含许多python的高级的API接口,Python开发直接调包到方法即可使用。
加载和显示图像
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
int main ( int argc , char ** argv )
{
if ( argc != 2 )
{
cout << " Usage: display_image ImageToLoadAndDisplay" << endl ;
//返回 - 1 ;
}
// 读取图像;
image = imread ( argv [ 1 ], CV_LOAD_IMAGE_COLOR ); // 读取文件
if ( !image.data ) // 检查无效输入
{
cout << " Could not open or find the image " << std :: endl ; //返回- 1 ;
}
namedWindow ( "显示窗口" , CV_WINDOW_AUTOSIZE ); // 创建一个用于显示的窗口。
imshow ( "显示窗口" , image ); // 在其中显示我们的图像。
waitKey(0 ); // 等待窗口中的击键
return 0 ;
}
读取、修改、保存图像
#include <cv.h>
#include <highgui.h>
int main ( int argc , char ** argv )
{
if ( argc != 2 )
{
printf ( "useage: %s <imagefile> \n " , argv [ 0 ]);
return - 1 ;
}
char * imageName = argv [ 1 ];
// 加载图像;
image = imread ( imageName , CV_LOAD_IMAGE_COLOR );
if ( ! image.data ) {
printf ( "无图像数据\n " ) ;
return - 1 ;
}
// 转灰色图像;
cvtColor ( image, gray_image , CV_BGR2GRAY );
// 需要根据你的电脑目录保存
imwrite ( "../../images/Gray_Image.jpg" , gray_image );
namedWindow ( "图像名称", CV_WINDOW_AUTOSIZE );
namedWindow ( "灰度图像" , CV_WINDOW_AUTOSIZE );
imshow ( 图像名称, 图像 );
imshow ( "灰度图像" , gray_image );
waitKey(0);
return 0 ;
}