opencv加载修改显示保存图像
掌握函数
- cv::imread 加载
- cv::cvtColor 修改
- cv::namedWindow 创建窗口
- cv::imshow 显示
- cv::imwrite 保存
加载图像
imread功能是加载图像文件成为一个mat对象,其中第一个参数为图像文件的名称,第二个参数为加载的图像为什么类型,支持以下3种参数值类型:
- IMREAD_UNCHANGED(<0)加载原图,不做任何改变,默认使用
- IMREAD_GRAYSCALE(0)将图像作为灰度图加载进来
- IMREAD_COLOR(>0)把原图作为RGB图像加载进来
注意:opencv支持JPG、PNG、TIFF等常见图像文件的加载
显示图像
- namedWindow创建一个opencv窗口,它由opencv自动创建与释放,你无需销毁它。
- 常见用法namedWindow(“window title”,WINDOW_AUTOSIZE);
- WINDOW_AUTOSIZE会自动根据图像大小显示图像窗口,不能认为改变窗口大小
- WINDOW_NORMAL跟QT集成的时候会用到,可以改变窗口的大小
- imshow根据窗口名称显示图像到指定窗口中去
修改图像
cvtColor的功能是将图像从一个色彩空间转换到另一个色彩空间,有三个参数,第一个是原图像名称,第二个是转换之后图像的名称,第三个表示源和目标色彩空间如:COLOR_BGR2HLS,COLOR_BGR2GRAY
- cvtColor(image,gray_image,COLOR_BGR2GRAY);
保存图像
imwrite保存图像到指定目录路径
代码
//
// main.cpp
// opencv_001
//
// Created by istars on 2019/9/23.
// Copyright © 2019年 istars. All rights reserved.
//
#include <opencv2/opencv.hpp>
using namespace cv;
int main( int argc, char** argv )
{
String imageName( "/Users/istars/Pictures/权志龙1.jpg" ); //默认
if( argc > 1)
{
imageName = argv[1];
}
Mat image;
image = imread( imageName, IMREAD_COLOR );//作为RGB图像加载
if( image.empty() )
{
printf( " No image data \n " );
return -1;
}
Mat gray_image;
cvtColor( image, gray_image, COLOR_BGR2GRAY );//转换为灰度图
imwrite( "/Users/istars/Pictures/Gray_Image.jpg", gray_image );//保存图像
namedWindow( imageName, WINDOW_AUTOSIZE );
namedWindow( "Gray image", WINDOW_AUTOSIZE );
imshow( imageName, image );
imshow( "Gray image", gray_image );
waitKey(0);
return 0;
}
⚠️注意:在写#include <opencv2/opencv.hpp>时,会报一个Link的错误。于是,我把/usr/local/lib下面所有与opencv有关的都添加进来了