1.2. 从一张图片入门OpenCV

目标

本实例的目的是使初学者通过本文档的学习,可以掌握

  • 从文件读取图片(cv::imread)
  • 使用OpenCV 窗口显示图片(cv::imshow)
  • 将图片另存为新的文件(cv::imwrite)

源码

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
int main()
{
    std::string image_path = samples::findFile("starry_night.jpg");
    Mat img = imread(image_path, IMREAD_COLOR);
    if(img.empty())
    {
        std::cout << "Could not read the image: " << image_path << std::endl;
        return 1;
    }
    imshow("Display window", img);
    int k = waitKey(0); // Wait for a keystroke in the window
    if(k == 's')
    {
        imwrite("starry_night.png", img);
    }
    return 0;
}

源码解读

     OpenCV 3 中有许多模块.每个模块负责完成不同的功能或者不同的图像处理方法.在此教程的用户指南部分您应该已经了解到了这点.在你使用任何模块之前,首先需要包含各个独立模块所对应的头文件.你几乎必不可少的要使用到如下模块:

  • core:定义了OpenCV库的基本框架
  • imgcodecs模块:提供读写功能
  • highgui模块:提供在窗口显示图像的接口

    另外我们也需要包含iostream以方便控制台的输入输出控制.

 

通过声明cv名称空间,以便后续访问库函数的时候可以无需显式声明名称空间.

using namespace cv;
  1. 读取starry_night.jpg图片 .为了达到这个目的,调用cv::imread(),并将图片路径传递给此函数的第一个参数,第二个参数是可选的,指定了想要的图片格式.图片格式的可能值是:

         IMREAD_COLOR:加载BGR 8位格式图片,这也是默认值

         IMREAD_UNCHANGED:原样加载图像(包括可能存在的alpha通道)

         IMREAD_GRAYSCALE:以灰度(黑白)的形式加载图像读取之后将读取后的数据存储到cv::Mat对象img中.

  2. 判断图像是否被正确加载.即判断img是否为空
  3. 调用cv::imshow()显示图像.第一个参数是窗口标题,第二个参数是要显示的cv::Mat对象
  4. 因为我们希望窗口一直显示,直到用户按下一个键(否则程序会很快结束).所以我们使用cv::waitKey()函数,它唯一的参数是等待用户输入等待的时间(以ms为单位)
  5. 按下s键,图像被协议文件.cv::imwrite()函数第一个参数是存储的文件名,第二个参数是cv::Mat对应的对象.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值