目录
1、需要用到的图像放哪里?
2、读取显示、保存图像:
(1)cv2.imread()函数用于读取图像RGB信息
(2)cv2.imshow()
(3)cv2.imwrite()
3、数据读取-视频
(1)cv2.VideoCapture()
(2)ret,frame = cap.read()
(3)cv2.cvtColor()
1、需要用到的图像放哪里?
(1)在本工程下,新建一个文件夹,然后里面放需要用的图像就可。
(直接复制你要的图片,然后粘贴在你所创建的存放图像的文件夹里就可。
比如我这里就是粘贴到 图像 文件夹里)
直接将图片拖到pycharm里的话,好像就是移动图像了,之前地方的图像就没了(我试的时候是这样,也就是默认拖动是移动,而不是复制)。
利用该种方法时,调用时的路径应这样写:'my_imgs/xi.jpg'
(路径中不能有中文和敏感词,如\n、\t、、......!!!)
(2)利用绝对路径,如D:/.......(不能有中文和敏感词!!!)
(3)其实呢,随便放就可以,如果你不新建一个文件夹,直接放在本工程下,也是可以的,那么调用时的路径就直接是你图像的名称啦,如'xi.jpg' (反正无论如何,不能有中文和敏感词就对了)
2、读取显示、保存图像: (1)cv2.imread()函数用于读取图像RGB信息彩色图像:cv2.IMREAD_COLOR
灰度图像:cv2.IMREAD_GRAYSCALE
import cv2
import matplotlib.pyplot as plt
import numpy as np
# matplotlib inline
img0 = cv2.imread('my_imgs/xi.jpg', cv2.IMREAD_GRAYSCALE) # 读取灰度图RGB信息
print(img0.shape)
img1 = cv2.imread('my_imgs/xi.jpg', cv2.IMREAD_COLOR) # 读取彩色图RGB信息
print(img1.shape)
结果:
shape读取的三个参数分别是图片的高度、宽度、颜色通道(为3,则说明是彩色图,没有,则说明不是彩色图)
img.shape[:2] 取彩色图片的长、宽。
如果img.shape[:3] 则取彩色图片的长、宽、通道。
关于img.shape[0]、[1]、[2]
img.shape[0]:图像的垂直尺寸(高度)
img.shape[1]:图像的水平尺寸(宽度)
img.shape[2]:图像的通道数
在矩阵中,[0]就表示行数,[1]则表示列数。
Ps: opencv中读取的图像通道信息是BGR顺序的。
cv2.imShow()函数可以在窗口中显示图像。
该窗口和图像的原始大小自适应(自动调整到原始尺寸)。
第一个参数是一个窗口名称(也就是我们对话框的名称),它是一个字符串类型。
第二个参数是我们的图像。
您可以创建任意数量的窗口,但必须使用不同的窗口名称。
import cv2
import matplotlib.pyplot as plt
import numpy as np
img0 = cv2.imread('my_imgs/xi.jpg', cv2.IMREAD_GRAYSCALE) # 读取灰度图RGB信息,没有第二个参数,默认为彩色图
img1 = cv2.imread('my_imgs/xi.jpg', cv2.IMREAD_COLOR) # 读取彩色图RGB信息
cv2.imshow('img0', img0)
cv2.imshow('img1', img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey(0): 是一个和键盘绑定的函数,它的作用是等待一个键盘的输入(因为我们创建的图片窗口如果没有这个函数的话会闪一下就消失了,所以如果需要让它持久输出,我们可以使用该函数)。
它的参数是毫秒级。
该函数等待任何键盘事件的指定毫秒。
如果您在此期间按下任何键,程序将继续进行。
我们也可以将其设置为一个特定的键。
参数是1,表示延时1ms切换到下一帧图像,对于视频而言;
参数为0,如cv2.waitKey(0)只显示当前帧图像,相当于视频暂停,;
参数过大如cv2.waitKey(1000),对于一个图像而言,就是显示1s后自动关闭该图像窗口;对视频而言,会因为延时过久而卡顿感觉到卡顿,一帧显示1s。
c得到的是键盘输入的ASCII码,esc键对应的ASCII码是27,即当按esc键是if条件句成立
Ps:waitKey()方法本身表示等待键盘输入
cv2.destroyALLWindows(): 销毁我们创建的所有窗口。
如果要销毁任何特定窗口,请使用函数cv2.destroyWindow(),其中传递确切的窗口名称作为参数。
(应该是使用创建窗口时所使用的窗口名称,字符串类型。
)
注:
我们还可以使用另一种方法来加载图片:先创建一个窗口,之后在需要的时候将图像加载到该窗口。
说明:在这种情况下,用cv2.namedWindow()函数可以指定窗口是否可以调整大小。
在默认情况下,标志为cv2.WINDOW_AUTOSIZE。
但是,如果指定标志为cv2.WINDOW_Normal,则可以调整窗口的大小。
当图像尺寸太大,并在窗口中添加跟踪条时,这些 *** 作可以让我们的工作更方便一点。
cv2.imwrite(),保存图像,第一个参数为新图像保存路径,第二个参数为需要保存的图像名称
import cv2
img1 = cv2.imread('my_imgs/xi.jpg', cv2.IMREAD_COLOR) # 读取彩色图RGB信息
cv2.imwrite('my_imgs/xidada.png', img1)
,可以保存为不同类型的图片,如jpg格式的保存为png格式
3、数据读取-视频 (1)cv2.VideoCapture()VideoCapture()中参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频,如cap = cv2.VideoCapture("../test.avi")
(2)ret,frame = cap.read() cap.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。
其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。
frame就是每一帧的图像,是个三维矩阵。
OpenCV-Python是旨在解决计算机视觉问题的Python绑定库。
cv2.cvtColor()
方法用于将图像从一种颜色空间转换为另一种颜色空间。
OpenCV提供了150多种color-space转换方法。
我们将在下面使用一些颜色空间转换代码。
用法:cv2.cvtColor(src, code[, dst[, dstCn]])
参数: 它是一个可选参数。 如果参数为0,则通道数自动从src和代码得出。 它是一个可选参数。
src:它是要更改其色彩空间的图像。
code:它是色彩空间转换代码。
dst:它是与src图像大小和深度相同的输出图像。
dstCn:它是目标图像中的频道数。
返回值:它返回一个图像。
import cv2
vdo_path = "D:\HONOR Magic-link\Screenshot\mytest0.mp4"
vc00 = cv2.VideoCapture(vdo_path)
# 检查打开是否正确
if vc00.isOpened():
is_open, frame = vc00.read()
else:
is_open = False
while is_open:
open_y, frame = vc00.read() # 获取图像的帧
if frame is None:
break
if open_y is True:
# 将图像从一种颜色空间转换为另一种颜色空间
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.namedWindow('result', cv2.WINDOW_NORMAL) # 可调窗口大小
cv2.imshow('result', gray) # 展示
if cv2.waitKey(1) & 0xFF == 27:
break
vc00.release() # 调用release()释放摄像头
cv2.destroyAllWindows()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)