OpenCV|图像、视频的读取与保存

 

图像的读取、显示、保存

import cv2
img = cv2.imread('D:\\0318test_1.jpg',cv2.IMREAD_GRAYSCALE)
cv2.imshow('my_img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('0318test_1.jpg',img) cv2
img = cv2.imread('D:\\0318test_1.jpg',cv2.IMREAD_GRAYSCALE)
cv2.imshow('my_img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('0318test_1.jpg',img)

读取:cv2.imread(filepath,flags)

第一个参数为完整的路径名,第二个参数为图像的标志

  • cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道

  • cv2.IMREAD_GRAYSCALE:读入灰度图片

  • cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道

显示:cv2.imshow(wname,img)

第一个参数是显示的窗口名,第二个参数是imread()读入的图像

保存:cv2.imwrite(file,img,num)

第一个参数是要保存的文件名,第二个参数是要保存的图像

第三个可选,表示特定格式保存的参数编码,它有默认值std::vector<int>(),所以一般情况下不需要填写。如果更改的话,对于不同的图片格式,其对应的值不同功能不同,如下:

  • 对于JPEG格式的图片,这个参数表示从0-100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值是95。

  • 对于PNG格式的图片,这个参数表示压缩级别(CV_IMWRITE_PNG_COMPRESSION)从0-9。较高的值意味着更小的尺寸和更长的压缩时间而默认值是3。

  • 对于PPM,PGM或PBM格式的图片,这个参数表示一个二进制格式标志(CV_IMWRITE_PXM_BINARY),取值为0或1,而默认值为1。

cv2.waitKey()

键盘绑定函数,共一个参数(如果你用的是64位的系统,写成cv2.waitKey(0) & 0xFF)。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。

cv2.destroyAllWindows()

销毁所有的窗口。

小结:

图像的读取,显示。保存较为简单,不过要注意imread()中的参数需要的是图片的完整路径,这也是网上代码直接拿来用时的遇到的第一个小小的坑吧,然后还有就是显示的图像太大,导致无法显示一整张图片。

视频的采集、保存、读取

一、视频的采集

import numpy as np  
import cv2  
cap=cv2.VideoCapture(0)  
while (True):  
    ret,frame=cap.read()  
    gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)  
    cv2.imshow("shiyan",gray)  
    if cv2.waitKey(1)&0xFF==ord('q'):  
        break  
        cap.release()  
        cv2.destroyAllWindows() numpy as np  
import cv2  
cap=cv2.VideoCapture(0)  
while (True):  
    ret,frame=cap.read()  
    gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)  
    cv2.imshow("shiyan",gray)  
    if cv2.waitKey(1)&0xFF==ord('q'):  
        break  
        cap.release()  
        cv2.destroyAllWindows()

ret,frame=cap.read()

cap.read()会返回两个参数。第一个参数ret的值为True或False,代表有没有读到图片,第二个参数是frame,是当前截取一帧的图片。

gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

cv2.cvtColor()用来转换颜色,这里将彩色图转成灰度图。

灰度图不是灰色,如果要显示灰色的可以用cv2.IMREAD_GRAYSCALE

 

另外,通过cap.get(propId)可以获取摄像头的一些属性,比如捕获的分辨率,亮度和对比度等。propId是从0~18的数字,代表不同的属性,完整的属性列表可以参考:Property Identifier。也可以使用cap.set(propId,value)来修改属性值。比如说,我们在while之前添加下面的代码:

作者:ex2tron链接:https://www.jianshu.com/p/2b79012c0228來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

# 获取捕获的分辨率
# propId可以直接写数字,也可以用OpenCV的符号表示
width, height = capture.get(3), capture.get(4)
print(width, height)
​
# 以原分辨率的一倍来捕获
capture.set(cv2.CAP_PROP_FRAME_WIDTH, width * 2)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, height * 2)
​
作者:ex2tron
链接:https://www.jianshu.com/p/2b79012c0228
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
# propId可以直接写数字,也可以用OpenCV的符号表示
width, height = capture.get(3), capture.get(4)
print(width, height)
​
# 以原分辨率的一倍来捕获
capture.set(cv2.CAP_PROP_FRAME_WIDTH, width * 2)
capture.set(cv2.CAP_PROP_FRAME_HEIGHT, height * 2)
​
作者:ex2tron
链接:https://www.jianshu.com/p/2b79012c0228
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

二、视频的保存

 

未完待续……

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值