【OpenCV】关于OpenCV中imread/imwrite/imshow/cvtColor等 Api的简单描述和使用

这篇具有很好参考价值的文章主要介绍了【OpenCV】关于OpenCV中imread/imwrite/imshow/cvtColor等 Api的简单描述和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

01、imread

  1. 官方定义

    imread函数是OpenCV中的一个函数,用于从文件中读取图像。该函数支持读取多种图像格式,包括BMP、JPEG、PNG、TIF等常见格式。

CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR );
/*
* imread: 读取图片,参数如下
* CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR );
* filename: 图片的绝对路径
* flags: 读取图像的模式   例如: 加载灰度图片 IMREAD_GRAYSCALE   加载透明通道图片 IMREAD_UNCHANGED
* 返回值:
* 若成功读取图像,则返回Mat类型的图像矩阵。
* 若读取失败,则返回一个空的Mat矩阵。
*/

tips: 注意这里imread函数加载的是8bit 图像

  1. 示例
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    // 读取图像
    Mat img = imread("C:/openCV_image/WeChatTouXiang.jpg"); 

    // 判断是否读取成功
    if (img.empty())
    {
        cout << "Failed to load image!" << endl;
        return -1;
    }

    // 显示图像
    imshow("Image", img);

    // 等待按键按下
    waitKey(0);

    return 0;
}

02、imwrite

  1. 官方定义

    imwrite函数是OpenCV中的一个函数,用于将图像写入文件中。该函数支持写入多种图像格式,包括BMP、JPEG、PNG、TIF等常见格式。

CV_EXPORTS_W Mat imread( const String& filename, int flags = IMREAD_COLOR );
/*
* imread: 写入图片
* filename:待读取的图像文件路径。
* flags:读取图像的模式。
* 返回值:
* 若成功读取图像,则返回Mat类型的图像矩阵。
* 若读取失败,则返回一个空的Mat矩阵。
*/
  1. 示例
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    // 读取图像
    Mat img = imread("C:/openCV_image/WeChatTouXiang.jpg");

    // 判断是否读取成功
    if (img.empty())
    {
        cout << "Failed to load image!" << endl;
        return -1;
    }

    // 写入图像
    bool ret = imwrite("C:/openCV_image/WeChatTouXiang_copy.jpg", img);

    // 判断是否写入成功
    if (ret)
    {
        cout << "Image saved successfully!" << endl;
    }
    else
    {
        cout << "Failed to save image!" << endl;
        return -1;
    }

    return 0;
}

需要注意的是,imwrite函数默认将图像写入为BGR格式,如果想将图像保存为灰度图像或其他格式,则需要在调用imwrite函数时指定相应的参数。例如,写入灰度图像的方式如下:

bool ret = imwrite("C:/openCV_image/WeChatTouXiang_copy.jpg", img, vector<int>{CV_IMWRITE_JPEG_QUALITY, 100});

其中,CV_IMWRITE_JPEG_QUALITY指定写入为JPEG格式,100表示图像质量。同时,注意params参数是一个vector类型的变量,用于传递写入图像的参数。

03、imshow

  1. 官方定义

    imshow函数是OpenCV中用于显示图像的函数,可以将图像显示在窗口中。

CV_EXPORTS_W void imshow(const String& winname, InputArray mat);
/*
* imshow: 显示图片
* CV_EXPORTS_W void imshow(const String& winname, InputArray mat);
* winname:显示的窗口名称/标题
* mat:获取的图像矩阵,即Mat类
* 返回值:void
*/
  1. 示例
#include <opencv2/opencv.hpp>

using namespace cv;

int main()
{
    // 读取图像
    Mat img = imread("C:/openCV_image/WeChatTouXiang.jpg");

    // 创建窗口
    namedWindow("Image", WINDOW_AUTOSIZE);

    // 显示图像
    imshow("Image", img);

    // 等待用户按键
    waitKey(0);

    // 关闭窗口
    destroyAllWindows();

    return 0;
}

需要注意的是,imshow函数仅能在图形用户界面(GUI)环境下使用,即必须在图形界面的窗口中显示图像。如果在命令行环境下运行OpenCV应用程序,就需要使用其他的方法显示图像。

04、namedWindow

  1. 官方定义

    namedWindow函数是OpenCV中用于创建新窗口的函数

CV_EXPORTS_W void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
/*
* namedWindow: 创建一个新的窗口,可以设置加载大小
* CV_EXPORTS_W void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
* winname: 窗口的名称,支持中文
* flags: 可选参数,用于指定窗口的属性,如窗口是否可调整大小、是否具有滚动条等。   WINDOW_FREERATIO:自由比例,可以拖动大小
*/
  1. 示例
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    // 创建一个名为"Example"的新窗口
    namedWindow("Example", WINDOW_AUTOSIZE);

    // 读取一张图像
    Mat image = imread("C:/openCV_image/shenlilinghua.jpg");

    // 在窗口中显示图像
    imshow("Example", image);

    // 等待用户按下任意键后关闭窗口
    waitKey(0);

    // 关闭窗口
    destroyWindow("Example");
    //或者  destroyAllWindow();

    return 0;
}

05、cvtColor

  1. 官方定义

    cvtColor函数是OpenCV中用于颜色转换的函数

CV_EXPORTS_W void cvtColor( InputArray src, OutputArray dst, int code, int dstCn = 0 );
/*
* src: 输入图像(Mat)
* dst: 输出图像(Mat)
* code: 转换代码
* dstCn: 输出图像的通道数(默认为0,表示与输入图像相同)
*/
  1. 示例
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    // 读取一张彩色图像
    Mat color = imread("C:/openCV_image/WeChatTouXiang.jpg");

    // 将彩色图像转换成灰度图像
    Mat gray,hsv;
    cvtColor(color, gray, COLOR_BGR2GRAY);
    cvtColor(color, hsv,  COLOR_BGR2HSV);

    // 在窗口中显示灰度图像
    imshow("Gray", gray);
    // 在窗口中显示Hsv图像
    imshow("Hsv", hsv);

    // 等待用户按下任意键后关闭窗口
    waitKey(0);

    return 0;
}

需要注意的是,在使用cvtColor函数时,必须确定转换代码,这里我们使用了COLOR_BGR2GRAY表示将BGR颜色空间转换成灰度颜色空间。

06、小结

学习OpenCV第二天,一些API的使用示例和用法总结,记录一下还是新手的自己,大佬请跳过!文章来源地址https://www.toymoban.com/news/detail-673774.html

到了这里,关于【OpenCV】关于OpenCV中imread/imwrite/imshow/cvtColor等 Api的简单描述和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Matlab保存double图像,解决imwrite与imshow不一致的问题

    通常情况下,我们输入的图像是 unit8 格式,而 Matlab 为了提高运算时的精度,都会把图像转为 double 类型。 但是我们在使用 imwrite 保存图像时,如果直接使用 double 类型,会导致图像变成二值图像。而且此时使用 imshow 查看的话,显示出来的图像还是正常的。 为了解决这个问

    2024年02月09日
    浏览(35)
  • 关于OpenCV中cv2.imwrite保存的图片是全黑色的解决方案

    原因:image图片是0-255,而imwrite保存图片的时候把图片标准化了,也就变为0-1,对于这个问题,只需要修改一下imwrite的输入就好,也就是括号后半部分那个参数*255,如下: 注意:括号里边的前半部分是自己起的文件名,后半部分“img_light”改成你自己的图像名。 比如我读入

    2024年02月16日
    浏览(31)
  • 关于opencv中cv2.imread函数读取的图像shape问题

    图像坐标系是(w,h),w为x轴,h为y轴,(x,y) 但opencv读出来的数组却正好相反,是(h,w,3),(y,x,3) 所以这里会有一个转换 实则转换为图像坐标系时,要转置一下,或者image.shape[::-1] 切片操作 [start,endstep],其中:- start: 表示开始的下标,如果省略默认为 0 - end: 表示结束的下标(不包含

    2024年02月12日
    浏览(34)
  • opencv imwrite()保存指定路径

    cpp为例 第32行为相对路径,当前工作目录为根目录(指VS的工程根目录、vscode打开的文件夹目录)。 也可以使用绝对路径,如 注: imwrite()不会创建文件夹 如上相对路径的例子中,理想情况下图片会保存到snapPhotos文件夹内。但若不存在snapPhotos文件夹,则 不会做任何事(也不

    2024年02月11日
    浏览(29)
  • [C++] opencv - imwrite函数介绍和使用场景

    OpenCV 是一个开源的计算机视觉库,它包含了许多用于图像处理和计算机视觉任务的函数。其中,imsave() 函数是 OpenCV 中的一个非常有用的函数,它可以让程序将处理后的图像数据保存到指定的文件中。 使用 imwrite() 函数可以将处理后的图像数据保存到本地文件系统中。例如,

    2024年02月04日
    浏览(32)
  • python-opencv第二期:imwrite函数详解

    概要:众 嗦粥之 所周知,在如今计算机视觉( Computer Version  short for CV)是人工智能与机器人技术发展的一个重大研究方向,而 opencv 作为一个专门为计算机视觉编程提供技术与函数支持的第三方库,自然是一个需要重点研究的内容。本文就将介绍其中一个较为基础的函数—

    2024年02月02日
    浏览(28)
  • opencv(4): cv2.imwrite()图像的保存

    语法格式:retval = cv2.imwrite(filename, image [, paras]) 参数说明: filename :代表文件名的字符串。文件名必须包含图像格式,例如.jpg,.png等。 image :图像数据矩阵 paras: 不同编码格式的参数,可选项 cv2.CV_IMWRITE_JPEG_QUALITY :设置 .jpeg/.jpg 格式的图片质量,取值为 0-100(默认值 95)

    2024年02月01日
    浏览(26)
  • opencv之imread函数

    原型:Mat imread( const String filename, int flags ); 参数1:文件名路径 参数2:载入标识;它指定一个加载图像的类型;默认为1;  flags 取值 :可以是以下枚举类型: (1) 输入有冲突情况, 如CV_LOAD_IMAGE_COLOR  | CV_LOAD_IMAGE_ANYCOLOR 时,将采用较小的数字值,将载入3通道图; (2) 若希望 载入最真实的图

    2024年02月09日
    浏览(23)
  • [C++] opencv - cvtColor函数介绍和使用场景

    OpenCV是一个开源的计算机视觉库,提供了许多图像处理和计算机视觉方面的功能。其中,cvtColor函数是OpenCV中非常重要的一个函数,用于将一种颜色空间的图像转换为另一种颜色空间的图像。本文将介绍cvtColor函数的相关知识,包括函数的介绍、函数原型和参数说明、函数使用

    2024年02月02日
    浏览(30)
  • python-opencv第三期:cvtColor函数详解

    概要:众 嗦粥之 所周知,在如今计算机视觉( Computer Version  short for CV)是人工智能与机器人技术发展的一个重大研究方向,而 opencv 作为一个专门为计算机视觉编程提供技术与函数支持的第三方库,自然是一个需要重点研究的内容。而本期所要介绍的函数就是opencv库下的函

    2024年02月02日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包