OpenCV图像读取

图像读取与显示


前言

在使用opencv-python库时,需要做的最简单工作就是导入库文件,读取图像,本文章主要介绍cv.imread()函数的相关属性。


cv.imread()

一、cv.imread()函数的原型

img = cv.imread(filename
				[,flags])
				#filename:需要读取图像的路径,包含图像的名称和图像的扩展名
				#flags:读取图像的标志,如将彩色图像按照灰度图来读取,默认是按照彩色图像格式读取。

cv.imread()函数用于读取指定的图像文件,并将读取回来的结果返回。如果图像的路径错误、破损或者格式不支持,则无法正确读取图像,但此时并不会报错,而是返回None。因此,使用命令print(img)查看得到的结果是否为None,进而判断是否读取成功了图像。

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv

img = cv.imread(路径)#默认以彩色图像读取图像
if img is None:
	print(提示内容)
#当然我们也可以将if img is None:这一段代码改为print(img),这两种写法都是可以的。

二、cv.imread()函数中的flags选择

标志简记作用
CV.IMREAD_UNCHANGED-1按照图像原样读取,保留alpha通道(第四个通道)
CV.IMREAD_GRAYSCALE0将图像转换为单通道灰度图像读取
CV.IMREAD_COLOR1将图像转换为三通道BGR色彩图像读取
CV.IMREAD_ANYDEPTH2保留原图像的16位、32位深度。若不做申明,则转换8位深度后读取
CV.IMREAD_ANYCOLOR4以任何可能出现的颜色格式读取图像
CV.IMREAD_LODA_GDAL8使用GDAL驱动程序加载
CV.IMREAD_REDUCED_GRAYSCALE_216将图像转化为单通道灰度图像,尺寸缩小至原来的一半,尺寸可以修改改为4时,缩小四分之一。
CV.IMREAD_REDUCED_COLOR_217将图像转化为三通道色彩图像,尺寸缩小至原来的一半,尺寸可以修改改为4时,缩小四分之一。
CV.IMREAD_IGNORE_ORIENTATION128不以EXIF的方向旋转图像

cv.imread()函数的读取文件类型

cv.imread()函数能够读取很多格式的图像文件,但是由于不同的操作系统使用的编解码器不同,因此在某些系统中能够读取的图像文件可能在其他的系统中就不能正常读取。opencv默认自带了部分图像解码器libjpeg、libpng、libtiff、libjasper,所以对于jpeg(jpg、jpeg、jpe)、png、tiff(tiff、tif)等格式是可以正常读取的。

注意

默认,读取图像的像素数量必须小于2的30次方,在某些领域的图像可能会超过这个数值,这是我们可以通过修改系统变量中CV.OPENCV_IO_MAX_IMAGE_PLXELS来调整能够读取的图像最大像素数目。

总结

文章主要讲述了opencv4 对于图像读取相关内容进行了一些简单的介绍,其中更深的知识,还需要我们自己进行探索。由于个人能力有限,文章中若有不对之处,请谅解。
文章参考了冯振的基于python的opencv4详解。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用OpenCV实时读取图像,可以使用OpenCV中的VideoCapture类。下面是一个示例代码,可以将摄像头捕获的图像实时显示出来: ``` #include <opencv2/opencv.hpp> using namespace cv; int main() { VideoCapture cap(0); // 0表示默认的摄像头设备 if (!cap.isOpened()) { std::cout << "Failed to open camera." << std::endl; return -1; } namedWindow("Camera", WINDOW_AUTOSIZE); while (true) { Mat frame; cap >> frame; // 从摄像头读取一帧图像 if (frame.empty()) { std::cout << "Failed to capture frame." << std::endl; break; } imshow("Camera", frame); // 显示图像 if (waitKey(30) == 'q') // 按下q键退出 { break; } } cap.release(); destroyAllWindows(); return 0; } ``` 这个示例代码中,我们使用VideoCapture类从摄像头中读取图像,并使用imshow函数实时显示图像。当按下q键时,程序退出。 ### 回答2: OpenCV是一个用于计算机视觉和图像处理的开源库。它可以帮助我们在编写图像处理程序时读取实时图像数据。 在使用OpenCV时,我们可以使用它提供的函数和类来读取实时图像。首先,我们需要创建一个VideoCapture对象,该对象用于从相机或视频文件中读取数据。我们可以通过参数来指定设备的索引或视频文件的路径。 一旦我们创建了VideoCapture对象,我们就可以使用它的read()函数来读取图像帧。这个函数返回一个布尔值,表示是否成功读取图像帧。如果成功读取图像帧,我们可以使用imshow()函数来显示图像。 为了实现即时读取图像,并且能够连续显示每一帧图像,我们可以使用一个while循环来不断读取和显示图像帧。在每个循环迭代中,我们可以使用waitKey()函数来等待用户按下键盘上的某个键,以便可以中断循环。 当我们想要停止读取并显示图像时,我们可以通过调用release()函数来释放VideoCapture对象。 总之,OpenCV提供了一些方便的函数和类,可以帮助我们实时读取图像。我们只需要创建一个VideoCapture对象,使用其read()函数来读取图像帧,并使用imshow()函数显示图像帧,就可以实现实时图像读取的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值