QT+opencv【opencv学习篇】OpenCV 读取、显示和保存图像

这篇具有很好参考价值的文章主要介绍了QT+opencv【opencv学习篇】OpenCV 读取、显示和保存图像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

 文章来源地址https://www.toymoban.com/news/detail-603449.html

一、OpenCV 读取图像

OpenCV 读取函数

参数:

二、OpenCV 显示图像

imshow函数

imshow函数功能

imshow函数原型

三、OpenCV 保存图像

四、结果和代码


 

一、OpenCV 读取图像

OpenCV 允许我们对图像执行多种操作,但要做到这一点,需要读取一个图像文件作为输入,然后我们可以对其执行各种操作。OpenCV 提供了以下用于读取和写入图像的函数。

OpenCV 读取函数

imread() 函数从指定文件加载图像并返回。语法是:

cv2.imread(filename[,flag])

参数:

filename:要加载的文件名

flag:该标志指定加载图像的颜色类型:

       IMREAD_UNCHANGED            = -1, //!<如果设置,返回加载的图像是(alpha通道,否则它将被裁剪)。忽略EXIF方
       IMREAD_GRAYSCALE            = 0,  //!<如果设置,始终将图像转换为单通道灰度图像(编解码器内部转换)。
       IMREAD_COLOR                = 1,  //!<如果设置,总是将图像转换为3通道BGR彩色图像。
       IMREAD_ANYDEPTH             = 2,  //!<如果设置,当输入有相应深度时返回16位/32位图像,否则转换为8位图像。
       IMREAD_ANYCOLOR             = 4,  //!<如果设置,图像将以任何可能的颜色格式读取。
       IMREAD_LOAD_GDAL            = 8,  //!<如果设置,使用gdal驱动程序加载图像。
       IMREAD_REDUCED_GRAYSCALE_2  = 16, //!<如果设置,始终将图像转换为单通道灰度图像,图像大小减小1/2。
       IMREAD_REDUCED_COLOR_2      = 17, //!<如果设置,总是将图像转换为3通道BGR彩色图像,图像大小减小1/2。
       IMREAD_REDUCED_GRAYSCALE_4  = 32, //!<如果设置,始终将图像转换为单通道灰度图像,图像大小减小1/4。
       IMREAD_REDUCED_COLOR_4      = 33, //!<如果设置,总是将图像转换为3通道BGR彩色图像,图像大小减小1/4。
       IMREAD_REDUCED_GRAYSCALE_8  = 64, //!<如果设置,始终将图像转换为单通道灰度图像,图像大小减小1/8。
       IMREAD_REDUCED_COLOR_8      = 65, //!<如果设置,总是将图像转换为3通道BGR彩色图像,图像大小减小1/8。
       IMREAD_IGNORE_ORIENTATION   = 128 //!<如果设置了,不要根据EXIF的方向标志旋转图像。

如果由于不支持的文件格式、缺少文件、不支持或无效格式而无法读取图像,则imread()函数返回一个矩阵。目前,支持以下文件格式。

窗口位图- *.bmp, *.dib
JPEG 文件- *.jpeg, *.jpg, *.jpe
便携式网络图形- *.png
便携式图像格式- *.pbm, *.pgm, *.ppm
TIFF 文件- * .tiff, *.tif

注意:彩色图像、解码图像的通道将按 BGR 顺序存储。

二、OpenCV 显示图像

imshow函数

imshow函数功能

imshow的函数功能也非常简单,名称也可以看出来,image show的缩写。imshow负责的就是将图片显示在窗口中,通过设备屏幕展现出来。

imshow函数原型

CV_EXPORTS void imshow(const String& winname, const ogl::Texture2D& tex);

参数:

  • 没有返回值
  • 参数1, 显示的窗口名,可以使用cv::namedWindow函数创建窗口,如不创建,imshow函数将自动创建
  • 需要显示的图像

 

三、OpenCV 保存图像

OpenCV imwrite()函数用于将图像保存到指定文件。文件扩展名定义图像格式。语法如下:

函数原型:
CV_EXPORTS_W bool imwrite( const String& filename, InputArray img,
              const std::vector<int>& params = std::vector<int>());

 

函数参数:

  • filename:需要保存图像的文件名,要保存图片为哪种格式,就带什么后缀。
  • img:要保存的图像。
  • params:表示为特定格式保存的参数编码。

IMWRITE_JPEG_QUALITY      			//!对于JPEG,它的质量可以从0到100(越高越好)。缺省值为95。
IMWRITE_JPEG_PROGRESSIVE  			//!<启用JPEG特征,0或1,默认为False。
IMWRITE_JPEG_OPTIMIZE     			//!<启用JPEG特征,0或1,默认为False。
IMWRITE_JPEG_RST_INTERVAL 			//!< JPEG重启间隔,0 - 65535,默认为0 -不重启。
IMWRITE_JPEG_LUMA_QUALITY 			//!<单独的亮度质量等级,0 - 100,默认为0 -不使用。
IMWRITE_JPEG_CHROMA_QUALIT			//!<分离色度质量等级,0 - 100,默认为0 -不使用。
IMWRITE_PNG_COMPRESSION   			//!<对于PNG,它可以是0到9之间的压缩级别。数值越高,压缩时间越长,大小越小。如果指定,strategy将更改为IMWRITE_PNG_STRATEGY_DEFAULT (Z_DEFAULT_STRATEGY)。默认值为1(最佳速度设置)。
IMWRITE_PNG_STRATEGY      			//!< cv::ImwritePNGFlags之一,默认为IMWRITE_PNG_STRATEGY_RLE。
IMWRITE_PNG_BILEVEL       			//!<二进制级别PNG, 0或1,默认为0。
IMWRITE_PXM_BINARY        			//!<对于PPM, PGM或PBM,它可以是二进制格式标志,0或1。缺省值为1。
IMWRITE_EXR_TYPE          			//!< override EXR存储类型(默认为FLOAT (FP32))
IMWRITE_EXR_COMPRESSION   			//!< override EXR压缩类型(ZIP_COMPRESSION = 3是默认值)
IMWRITE_WEBP_QUALITY      			//!对于WEBP,它的质量可以从1到100(越高越好)。默认情况下(没有任何参数),如果质量高于100,则使用无损压缩。
IMWRITE_PAM_TUPLETYPE     			//!<对于PAM,将TUPLETYPE字段设置为为该格式定义的相应字符串值
IMWRITE_TIFF_RESUNIT 				//!<对于TIFF,用于指定要设置的DPI分辨率单位;有关有效值,请参阅libtiff文档
IMWRITE_TIFF_XDPI 					//!<对于TIFF,用于指定X方向DPI
IMWRITE_TIFF_YDPI 					//!<对于TIFF,用于指定Y方向DPI
IMWRITE_TIFF_COMPRESSION 			//!<对于TIFF,用于指定图像压缩方案。有关压缩格式对应的整数常量,请参阅libtiff。注意,对于深度为CV_32F的图像,只使用libtiff的SGILOG压缩方案。对于其他支持的深度,压缩方案可以通过该标志指定;LZW压缩是默认的。
IMWRITE_JPEG2000_COMPRESSION_X1000  //!<对于JPEG2000,用于指定目标压缩率(乘以1000)。取值范围为0 ~ 1000。缺省值为1000。

返回值:如果imwrite() 函数返回 True,则表示文件成功写入指定文件。

注意:

imwrite函数是基于文件扩展名选择图像的格式。通常,使用此功能只能保存8位单通道或3通道(带有BGR通道顺序)图像,但有以下例外:

对于PNG,JPEG2000和TIFF格式,可以保存16位无符号(CV_16U)图像。
32位浮点(CV_32F)图像可以保存为PFM,TIFF,OpenEXR和Radiance HDR格式; 使用LogLuv高动态范围编码(每像素4个字节)保存3通道(CV_32FC3)TIFF图像
可以使用此功能保存带有Alpha通道的PNG图像。为此,创建8位(或16位)4通道图像BGRA,其中alpha通道最后。完全透明的像素应该将alpha设置为0,完全不透明的像素应该将alpha设置为255/65535。
如果格式,深度或通道顺序不同,请在保存之前使用Mat :: convertTo和cv :: cvtColor进行转换。或者,使用通用FileStorage I / O函数将图像保存为XML或YAML格式。

四、结果和代码

代码:

#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc_c.h>
#include <opencv2/imgproc/types_c.h>
using namespace cv;


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    Mat img=cv::imread("E:/1WT/18.OCR/1.Demo/OCRtest/test.bmp");

    imshow("Image", img);

    imwrite("save.jpg",img);

    qDebug()<<"1243";
}

结果: 

qt使用opencv,机器视觉-QT+Opencv,opencv,计算机视觉,python

qt使用opencv,机器视觉-QT+Opencv,opencv,计算机视觉,python

 

 

 

到了这里,关于QT+opencv【opencv学习篇】OpenCV 读取、显示和保存图像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 4. QT环境下使用OPenCV(视频或摄像头读取显示在QLabel控件上)

    1. 说明 在用opencv处理图像时,图像的来源大部分情况下是从视频中读取过来的,视频可以是本地保存的视频,也可以是本地摄像头或者网络摄像头实时拍摄的视频。 效果展示: opencv读取视频 2. 具体操作 关于视频的读取,实际上也是从视频中将每一帧图像加载后,显示到Q

    2024年02月04日
    浏览(41)
  • OpenCV中读取、显示、保存图像及获取图像属性操作讲解及演示(附源码)

    需要源码和图片请点赞关注收藏后评论区留言私信~~~ OpenCV的作用在于让开发人员更容易地通过编码来处理图像。那么,处理图像需要执行哪些操作呢?图像处理的基本操作包含4个方面的内容:读取图像、显示图像、保存图像和获取图像属性。其中,常用的图像属性有3个:

    2024年02月05日
    浏览(39)
  • 【QT开发(5)】0919-QT里面新增ui类,新增使用opencv读取图片的普通类,在ui类中显示图片

    1、Qt Creator快速入门_第三版__霍亚飞编著 2、《Qt+OpenCV显示图片(Mat转QImage然后显示在QLabel上)》 https://gitee.com/hiyanyx/qt5.14-cpp_-empty_-project/tree/Study2023-section5/ git分支“Study2023-section5” 新增ui类 新增使用opencv读取图片的普通类 为了更加方便,可在QT 中添加普通类,这样会自动生

    2024年02月07日
    浏览(33)
  • Qt-OpenCV学习笔记--保存视频--VideoWriter()

    目录 一、概述 二、函数 三、测试代码 四、测试结果 五、遇到的问题 (1)初次运行代码会报错 (2)关于cv::VideoWriter::fourcc(\\\'X\\\',\\\'2\\\',\\\'6\\\',\\\'4\\\') 六、参考 这个函数是将连续的视频帧编码并保存到磁盘。函数的用法比较简单,但有一些问题点需要注意。 filename 视频的保存路径和文件

    2024年02月13日
    浏览(31)
  • 【Qt】用QWidget显示opencv采集的摄像头图像

    本案例用QWidget容器重写paintEvent函数来显示OpenCv采集的摄像头画面,图像还可以自适应QWidget的大小,还可以检测相机断开失联的情况(可能是掉电、线被拔了等待)。在改变窗口大小时暂停显示图像,防止莫名其妙的卡顿奔溃错误!(显示图像的方式有很多种,可以用QLabel显

    2024年02月13日
    浏览(38)
  • 【课程介绍】OpenCV 基础入门教程:图像读取、显示、保存,图像处理和增强(如滤波、边缘检测、图像变换),特征提取和匹配,目标检测和跟踪

    [ 专栏推荐 ] 😃 《视觉探索: OpenCV 基础入门教程》 😄 ❤️【简介】: Opencv 入门课程适合初学者,旨在介绍 Opencv 库的基础知识和核心功能。课程包括图像读取、显示、保存,图像处理和增强(如滤波、边缘检测、图像变换),特征提取和匹配,目标检测和跟踪等内容。学

    2024年02月16日
    浏览(45)
  • 如何使用OpenCV进行图像读取和显示?

    使用OpenCV进行图像读取和显示是计算机视觉领域中的常见任务之一。下面是关于如何使用OpenCV进行图像读取和显示的简要步骤和示例代码。    首先,你需要安装OpenCV库并确保正确导入它。然后,按照以下步骤执行图像读取和显示操作: 导入OpenCV库: 读取图像文件: 在这个

    2024年02月06日
    浏览(35)
  • [OpenCV学习笔记]Qt+OpenCV实现图像灰度反转、对数变换和伽马变换

    灰度反转是一种线性变换,是将某个范围的灰度值映射到另一个范围内,一般是通过灰度的对调,突出想要查看的灰度区间。 S = L − 1 − r ( r ⊂ [ 0 , L − 1 ] ) S = L -1-r (r subset [0,L-1]) S = L − 1 − r ( r ⊂ [ 0 , L − 1 ]) 比如在以下胸片图像中提取白色絮状形状,在黑色背景下看

    2024年04月13日
    浏览(26)
  • VC++中使用OpenCV读取图像、读取本地视频、读取摄像头并实时显示

    最近闲着跟着油管博主murtazahassan,学习了一下LEARN OPENCV C++ in 4 HOURS | Including 3x Projects | Computer Vision,对应的Github源代码地址为:Learn-OpenCV-cpp-in-4-Hours OpenCV是一个开源的计算机视觉库,其官网地址为:https://opencv.org/,对应Github源码地址为:https://github.com/opencv/opencv,目前来说

    2024年01月17日
    浏览(38)
  • OpenCV实现视频的读取、显示、保存

    目录 1,从文件中读取视频并播放 1.2代码实现 1.3效果展示 2,保存视频 2.1    代码实现 2.2   结果展示 下面将详细介绍如何使用OpenCV实现视频的读取、显示和保存,并解释其原理。 视频读取: 使用OpenCV可以通过 cv2.VideoCapture 类来读取视频文件。该类提供了一系列方法用于操

    2024年02月03日
    浏览(25)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包