欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Opencv视觉学习--读取、写入、显示图像

程序员文章站 2024-03-25 09:27:28
...

对于刚开始学习Opencv的朋友们,查找资料是自学最好的方式。
这一篇博客,我将介绍利用Opencv读取、写入并显示图像的操作方法,如有问题或建议可留言于我,谢谢!
构建环境:Ubuntu18.04 + Opencv4.1.0 + QT5.12

首先我们需要配置好QT的 .pro 文件:

TEMPLATE = app

CONFIG += console c++11

CONFIG -= app_bundle

CONFIG -= qt

INCLUDEPATH += /usr/local/include \
                /usr/local/include/opencv \
                /usr/local/include/opencv2 \
                /usr/local/include/librealsense2

LIBS += /usr/local/lib/libopencv_* \

SOURCES += \
    main.cpp

统一说明:图片路径需要用双引号引用,路径可以为绝对路径,也可为相对路径。路径中的“/”也可以写成“//”。

方法一:普通的读取、写入、显示图像

#include <opencv2/opencv.hpp>												//Opencv库文件
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
        Mat image =  imread ("/home/jiajia/图片/001.jpg");	//imread为读取函数,读取绝对路径
//         Mat image =  imread ("//home//jiajia//图片//001.jpg");	
        imwrite("/home/jiajia/workspace/show_photo/image.jpg",image);//imwrite为写入函数,写入绝对路径并命名(xxxx.jpg)
        imshow("image",image);
        waitKey(0);																						//代表无限等待,运行不等待会出现闪退的现象
     return 0;
}

方法二:循环里的读取、写入、显示图像

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
    while(1)
    {
        Mat image =  imread ("/home/jiajia/图片/002.jpg");
        imwrite("/home/jiajia/workspace/show_photo/image.jpg",image);
        imshow("image",image);
        int key = waitKey(1);
        if(char(key) == 27)break;			//通过读取揵值,退出窗口。在循环里不加入此功能,将不能退出窗口。
    }
    return 0;
}

方法三:基于相机读取函数的读取、写入、显示图像

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
    VideoCapture capture ("//home//jiajia//图片//001.jpg");//VideoCapture为相机读取函数
    while(1)
    {
       Mat image;
       capture >> image;																		//将视频流传入Mat类型的image图像中
       imwrite("/home/jiajia/workspace/show_photo/image.jpg",image);
       imshow("image",image);
        int key = waitKey(1);
        if(char(key) == 27)break;
    }
    return 0;
}

基本方法如上,希望能对大家有帮助。