官方定义
imread函数是OpenCV中的一个函数,用于从文件中读取图像。该函数支持读取多种图像格式,包括BMP、JPEG、PNG、TIF等常见格式。
CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR );
/*
* imread: 读取图片,参数如下
* CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR );
* filename: 图片的绝对路径
* flags: 读取图像的模式 例如: 加载灰度图片 IMREAD_GRAYSCALE 加载透明通道图片 IMREAD_UNCHANGED
* 返回值:
* 若成功读取图像,则返回Mat类型的图像矩阵。
* 若读取失败,则返回一个空的Mat矩阵。
*/
tips: 注意这里imread函数加载的是8bit 图像
#include
#include
using namespace cv;
using namespace std;
int main()
{
// 读取图像
Mat img = imread("C:/openCV_image/WeChatTouXiang.jpg");
// 判断是否读取成功
if (img.empty())
{
cout << "Failed to load image!" << endl;
return -1;
}
// 显示图像
imshow("Image", img);
// 等待按键按下
waitKey(0);
return 0;
}
官方定义
imwrite函数是OpenCV中的一个函数,用于将图像写入文件中。该函数支持写入多种图像格式,包括BMP、JPEG、PNG、TIF等常见格式。
CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR );
/*
* imread: 写入图片
* filename:待读取的图像文件路径。
* flags:读取图像的模式。
* 返回值:
* 若成功读取图像,则返回Mat类型的图像矩阵。
* 若读取失败,则返回一个空的Mat矩阵。
*/
#include
#include
using namespace cv;
using namespace std;
int main()
{
// 读取图像
Mat img = imread("C:/openCV_image/WeChatTouXiang.jpg");
// 判断是否读取成功
if (img.empty())
{
cout << "Failed to load image!" << endl;
return -1;
}
// 写入图像
bool ret = imwrite("C:/openCV_image/WeChatTouXiang_copy.jpg", img);
// 判断是否写入成功
if (ret)
{
cout << "Image saved successfully!" << endl;
}
else
{
cout << "Failed to save image!" << endl;
return -1;
}
return 0;
}
需要注意的是,imwrite函数默认将图像写入为BGR格式,如果想将图像保存为灰度图像或其他格式,则需要在调用imwrite函数时指定相应的参数。例如,写入灰度图像的方式如下:
bool ret = imwrite("C:/openCV_image/WeChatTouXiang_copy.jpg", img, vector<int>{CV_IMWRITE_JPEG_QUALITY, 100});
其中,CV_IMWRITE_JPEG_QUALITY指定写入为JPEG格式,100表示图像质量。同时,注意params参数是一个vector类型的变量,用于传递写入图像的参数。
官方定义
imshow函数是OpenCV中用于显示图像的函数,可以将图像显示在窗口中。
CV_EXPORTS_W void imshow(const String& winname, InputArray mat);
/*
* imshow: 显示图片
* CV_EXPORTS_W void imshow(const String& winname, InputArray mat);
* winname:显示的窗口名称/标题
* mat:获取的图像矩阵,即Mat类
* 返回值:void
*/
#include
using namespace cv;
int main()
{
// 读取图像
Mat img = imread("C:/openCV_image/WeChatTouXiang.jpg");
// 创建窗口
namedWindow("Image", WINDOW_AUTOSIZE);
// 显示图像
imshow("Image", img);
// 等待用户按键
waitKey(0);
// 关闭窗口
destroyAllWindows();
return 0;
}
需要注意的是,imshow函数仅能在图形用户界面(GUI)环境下使用,即必须在图形界面的窗口中显示图像。如果在命令行环境下运行OpenCV应用程序,就需要使用其他的方法显示图像。
官方定义
namedWindow函数是OpenCV中用于创建新窗口的函数
CV_EXPORTS_W void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
/*
* namedWindow: 创建一个新的窗口,可以设置加载大小
* CV_EXPORTS_W void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
* winname: 窗口的名称,支持中文
* flags: 可选参数,用于指定窗口的属性,如窗口是否可调整大小、是否具有滚动条等。 WINDOW_FREERATIO:自由比例,可以拖动大小
*/
#include
#include
#include
using namespace cv;
using namespace std;
int main()
{
// 创建一个名为"Example"的新窗口
namedWindow("Example", WINDOW_AUTOSIZE);
// 读取一张图像
Mat image = imread("C:/openCV_image/shenlilinghua.jpg");
// 在窗口中显示图像
imshow("Example", image);
// 等待用户按下任意键后关闭窗口
waitKey(0);
// 关闭窗口
destroyWindow("Example");
//或者 destroyAllWindow();
return 0;
}
官方定义
cvtColor函数是OpenCV中用于颜色转换的函数
CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );
/*
* src: 输入图像(Mat)
* dst: 输出图像(Mat)
* code: 转换代码
* dstCn: 输出图像的通道数(默认为0,表示与输入图像相同)
*/
#include
#include
#include
#include
using namespace cv;
using namespace std;
int main()
{
// 读取一张彩色图像
Mat color = imread("C:/openCV_image/WeChatTouXiang.jpg");
// 将彩色图像转换成灰度图像
Mat gray,hsv;
cvtColor(color, gray, COLOR_BGR2GRAY);
cvtColor(color, hsv, COLOR_BGR2HSV);
// 在窗口中显示灰度图像
imshow("Gray", gray);
// 在窗口中显示Hsv图像
imshow("Hsv", hsv);
// 等待用户按下任意键后关闭窗口
waitKey(0);
return 0;
}
需要注意的是,在使用cvtColor函数时,必须确定转换代码,这里我们使用了COLOR_BGR2GRAY表示将BGR颜色空间转换成灰度颜色空间。
学习OpenCV第二天,一些API的使用示例和用法总结,记录一下还是新手的自己,大佬请跳过!