使用 OpenCV 读取、显示和写入图像

简介: 使用 OpenCV 读取、显示和写入图像

综合代码示例:

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc, const char* argv[])
{
 Mat image = imread("E:/opencv_test_photo/baby.jpg", 1);
 imshow("my baby", image);
 waitKey(0);
 destroyAllWindows();
 return 0;
}

读取、显示和写入图像是图像处理和计算机视觉的基础。即使在裁剪、调整大小、旋转或应用不同的滤镜来处理图像时,您也需要先读入图像。所以掌握这些基本操作很重要。

世界上最大的计算机视觉库 OpenCV 内置了这三个函数,让我们来看看每个函数的作用:

  1. imread()帮助我们阅读图像
  2. imshow()在窗口中显示图像
  3. imwrite()将图像写入文件目录


1.引入头文件


//Include Libraries
#include<opencv2/opencv.hpp>
#include<iostream>
// Namespace nullifies the use of cv::function();
using namespace std;
using namespace cv;

2.读取图像


要读取图像,请使用imread() OpenCV 中的函数。这是语法:

imread(filename, flags)

它需要两个参数:

  1. 第一个参数是图像名称,它需要文件的完全限定路径名
  2. 第二个参数是一个可选标志,可让您指定应如何表示图像。OpenCV 为这个标志提供了几个选项,但最常见的包括:
  • cv2.IMREAD_UNCHANGED  或者-1
  • cv2.IMREAD_GRAYSCALE  或者0
  • cv2.IMREAD_COLOR  或者1

flags 的默认值为 1,它将在图像中读取为彩色图像。当您想以特定格式读取图像时,只需指定适当的标志。要查看不同的标志选项,打开下列链接:https://docs.opencv.org/master/d8/d6a/group__imgcodecs__flags.html#ga61d9b0126a3e57d9277ac48327799c80

如下面的代码部分所示,我们将首先使用上述所有三个标志值读取测试图像:

// Read an image
Mat img_color = imread("test.jpg", IMREAD_COLOR);
Mat img_grayscale = imread("test.jpg", IMREAD_GRAYSCALE);
Mat img_unchanged = imread("test.jpg", IMREAD_UNCHANGED);

或者以另一种形式:

Mat img_color = imread("test.jpg", 1);
Mat img_grayscale = imread("test.jpg", 0);
Mat img_unchanged = imread("test.jpg", -1);

三张照片的显示效果:

  1. 第一张图像以彩色显示
  2. 下一个为灰度
  3. 第三个是彩色的,因为这是图像的原始格式


3.显示图像


imshow()在 OpenCV 中,您使用该函数显示图像。这是语法:

imshow(window_name, image)

这个函数也有两个参数:

  1. 第一个参数是将要显示在窗口上的窗口名称。
  2. 第二个参数是您要显示的图像。

要一次显示多个图像,请为要显示的每个图像指定一个新的窗口名称。

imshow()函数旨在与waitKey()anddestroyAllWindows()/destroyWindow()函数一起使用。

waitKey()函数是键盘绑定函数。

  • 它需要一个参数,即显示窗口的时间(以毫秒为单位)。
  • 如果用户在此时间段内按下任何键,程序将继续。
  • 如果传递 0,则程序无限期地等待击键。
  • 您还可以设置该功能以检测键盘上的 Q 键或 ESC 键等特定击键,从而更明确地告诉哪个键应该触发哪个行为。

该函数destroyAllWindows()销毁我们创建的所有窗口。如果需要销毁特定窗口,请给出确切的窗口名称作为参数。UsingdestroyAllWindows()还会从系统的主内存中清除窗口或图像。下面的代码示例显示了如何使用该imshow()函数来显示您读入的图像。

// Create a window.
namedWindow( "color image", WINDOW_AUTOSIZE );
namedWindow( "grayscale image", WINDOW_AUTOSIZE );
namedWindow( "unchanged image", WINDOW_AUTOSIZE );
// Show the image inside it.
imshow( "color image", img_color ); 
imshow( "grayscale image", img_grayscale );
imshow( "unchanged image", img_unchanged ); 
// Wait for a keystroke.   
waitKey(0);  
// Destroys all the windows created                         
destroyAllWindows();


4.写一个图像


imwrite()最后,让我们讨论如何使用该函数将图像写入/保存到文件目录中。查看它的语法:
imwrite(filename, image).
1第一个参数是文件名,它必须包含文件扩展名(例如 .png、.jpg 等)。OpenCV 使用这个文件扩展名来指定文件的格式。
2第二个参数是您要保存的图像。True如果图像保存成功,该函数返回。
看看下面的代码。看看将图像写入磁盘是多么简单。只需指定带有适当扩展名的文件名(前面带有任何所需的路径)。包括包含图像数据的变量名称,您就完成了。


imwrite("grayscale.jpg", img_grayscale);

相关文章
|
2月前
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
523 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
3月前
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
55 4
|
3月前
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
4月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
WK
|
4月前
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
126 1
|
6月前
|
算法 计算机视觉
【Qt&OpenCV 图像的感兴趣区域ROI】
【Qt&OpenCV 图像的感兴趣区域ROI】
211 1
|
6月前
|
运维 算法 计算机视觉
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
86 1
|
6月前
|
存储 编解码 算法
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
110 0
|
5月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
6月前
|
计算机视觉
OpenCV中图像算术操作与逻辑操作
OpenCV中图像算术操作与逻辑操作
74 1