opencv加载修改显示保存图像

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有关的都添加进来了
在这里插入图片描述

结果

在这里插入图片描述

发布了35 篇原创文章 · 获赞 7 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/star_of_science/article/details/101197552