zoukankan      html  css  js  c++  java
  • OpenCV入门:(二:加载,显示,修改以及保存图片)

    目标:

    1.从图片文件打开图片(imread)

    2.显示图片(namedWindow和imshow)

    3.转换当前图片为灰色图片(cvtColor)

    4.保存图片(imwrite)

    代码:

    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/opencv.hpp>
    #include <iostream>
    
    using namespace cv;
    using namespace std;
    int main(int argc,char ** argv)
    {
        Mat image;
        //从文件中加载图片到image
        image = imread("lena.jpg",CV_LOAD_IMAGE_COLOR);
        //如果图片加载失败
        if (!image.data )
        {
            cout<<"read image failed"<<endl;
            return -1;
        }
        //创建显示图片窗口
        namedWindow("Ori Pic",WINDOW_AUTOSIZE);
        //显示窗口
        imshow("Ori Pic",image);
        //等待用户按键
        waitKey(10);
    
        //创建一个新矩阵用于
        Mat grayImage;
        //将图片转换成灰色,保存在grayimage中
        cvtColor(image,grayImage,CV_BGR2GRAY);
        //保存grayimage到文件
        imwrite("lena_gray.jpg",grayImage);
    
        //创建灰色图片窗口
        namedWindow("Gray Pic",WINDOW_AUTOSIZE);
        //显示灰色图片
        imshow("Gray Pic",grayImage);
        //等待用户按键
        waitKey(0);
        return 0;
    }

    API说明:

    Mat:储存图片数据的结构,后面会详细说明。

    Mat imread(const string& filename, int flags=1 )

    filename:需要加载的文件名

    flags:加载图像的颜色类型,可以取以下值。

    CV_LOAD_IMAGE_ANYDEPTH 如果设置了则返回16/32位图像,如果没设置,则返回8位图像
    CV_LOAD_IMAGE_COLOR 返回8位图像
    CV_LOAD_IMAGE_GRAYSCALE 返回灰度图像
    >0 返回一个三通道图像
    =0 返回灰色图像
    <0 返回带有α通道的图像
    void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE )

    winname:窗口名字,也是窗口的标识符

    flags:创建窗口标识,可以为以下值

    WINDOW_NORMAL 窗口可以无约束的修改大小
    WINDOW_AUTOSIZE 自动设置窗口大小为和图片适应的大小,并且不能修改
    WINDOW_OPENGL 可以创建一个支持OpenGL的窗口
    void imshow(const string& winname, InputArray mat)

    winname:窗口的名字

    mat:显示的图片数据。

    此函数一般同waitkey同用,waitKey(0) 显示窗口直到用户按下键,waitkey(10) 显示窗口10ms。

    void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )

    src 输入的图片
    dst 和src有着相同的尺寸和深度(depth)的输出图片缓存区
    code 颜色空间转换码
    dstCn 目标缓存区的颜色通道,如果为0则设置和源图像相同的通道

    bool imwrite(const string& filename, InputArray img, const vector<int>& params=vector<int>() )

    filename:保存文件名

    img:保存的图片

    params:指定格式的数据存储的容器,以这种格式出现,paramId_1, paramValue_1,paramId_2, paramValue_2.

    对于JPEG图像:parmId可以为:CV_IMWRITE_JPEG_QUALITY表示图片质量。paramValue_1可以为0-100(越高图片质量越好),默认是95。

    对于PNG图像:parmId可以为:CV_IMWRITE_PNG_COMPRESSION 表示压缩等级。paramValue_1可以为0-9(越高图片越小),默认是3。

    对于PPM, PGM, 和PBM图像:parmId可以为:CV_IMWRITE_PXM_BINARY 表示二进制格式化标志(binary format flag)。paramValue_1可以为0或1。默认是1。

    显示效果

    运行上面代码:

    首先显示彩色图片:

    1

    10秒过后

    2

    同时当前目录增加了一张名为lena_gray.jpg的图片。

    3

    本文结束。

  • 相关阅读:
    KindEditor的使用
    python过滤文件中特殊标签
    django中orm的简单操作
    django中models联合唯一unique_together
    博客当中的文章分类以及归档
    zabbix前端添加平台脚本监控
    django重写form表单中的局部钩子函数
    input获取、失去焦点对输入内容做验证
    django admin后台的简单使用
    django中博客后台将图片上传作为用户头像
  • 原文地址:https://www.cnblogs.com/Reyzal/p/4601117.html
Copyright © 2011-2022 走看看