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;
}
基本方法如上,希望能对大家有帮助。