[OpenCV] 数字图像处理 C++ 学习——01图像的读取、加载和保存附完整代码(小白入门篇)

前言

​ 在学习 OpenCV 的过程中,首先需要掌握如何读取(imread)、展示(imshow)和保存(imwrite)图像,这些基本操作是所有图像处理任务的基础。无论是对图像进行滤波、变换、特征提取,还是进行更高级的计算机视觉任务,图像的读取与保存都是不可或缺的第一步。在这篇博客中,我们将详细讲解如何使用 OpenCV 在 C++ 中进行图像的读取、加载和保存操作,并提供完整的代码示例,帮助初学者打下扎实的基础。通过理解并掌握这些基础技能,你将为后续的图像处理和分析工作做好充分的准备。

1.图像读取(cv::imread)

使用的图像链接:实验使用的图像下载链接

图像的读取通常通过 cv::imread 函数来实现。imread 函数可以从指定的文件路径中加载图像,并将其存储在 cv::Mat 对象中。判定图像是否能找到,如果图像没找到则返回-1。

    cv::Mat image = cv::imread("sherlock.jpg");
    if (image.empty()) {
        std::cerr << "Could not find or open the image" << std::endl;
        return -1;
    }

(1)相对路径

读取本项目路径下的图片

	cv::Mat image = cv::imread("sherlock.jpg");

(2)绝对路径

读取其他文件夹中的图片,注意是“/”。

	cv::Mat image = cv::imread("E:/opencv/sherlock.jpg");

2.图像展示(cv::imshow)

namedWindow 创建一个窗口用于显示图像。窗口的名称为 "input image"cv::WINDOW_AUTOSIZE :确保窗口大小与显示的图像尺寸匹配,不会自动调整窗口大小。这样,图像会以其原始尺寸显示,不会因窗口调整而缩放或变形。

waitKey(0);确保图像窗口在显示时不会立即关闭,给出时间查看图像。如果代码正确,也能读取图像但是不能显示出图像,就是这个问题,图像会一闪而过,感觉图像没有显示。

	namedWindow("input image", cv::WINDOW_AUTOSIZE);
	cv::imshow("input image", image);
	waitKey(0);

3.图像保存(cv::imwrite)

imwrite 函数用于将 cv::Mat 对象保存为图像文件。第一个参数是保存路径,第二个参数是要保存的 Mat 对象。保存路径也可以使用绝对路径保存到指定文件夹中

cv::imwrite("output.jpg", image);

完整代码

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

using namespace cv;
using namespace std;

void imread_show_imwrite()
{
	/*******************图像读取********************/
	//cv::Mat image = cv::imread("sherlock.jpg");  // 读取本项目路径下的图片
	cv::Mat image = cv::imread("E:/opencvdemo/opencv/sherlock.jpg"); //读取其他文件夹中的图片
	if (image.empty()) {
		std::cerr << "Could not find or open the image" << std::endl;
		return;
	}
	/*******************图像展示********************/
	namedWindow("input image", cv::WINDOW_AUTOSIZE);
	cv::imshow("input image", image);
	waitKey(0);
	/*******************图像保存********************/
	cv::imwrite("output.jpg", image);
}
int main() 
{
	imread_show_imwrite();
    return 0;
}
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值