opencv包基本操作

该博客介绍了如何使用OpenCV库进行计算机视觉操作,包括读取和抓取视频帧,显示图片,调整图片大小,获取RGB信息,保存图片,转换为黑白图片,以及将图片写入视频。示例代码展示了读取视频、处理图片和创建avi视频的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

opencv 计算机视觉库 (ftp帧率=30的半小时以内的avi视频可以生成,不能添加音频)
import cv2
读取视频,抓取视频中的静态图片(一帧):

cap = cv2.VideoCapture(video_path) #video_path = 0时为使用摄像头
if cap.isOpened(): #是否正常打开视频(或摄像头)
	status,frame = cap.read() #抓取视频中的一帧,返回两个值,一个boolean值,为True或False,表示是否读取到图片(可用它来检测是否到视频末尾),一个是numpy数组,是一帧图片
else:#如果没有正常打开
	status = False

当结束抓帧时,释放视频流

cap.release()

读取图片

img = cv2.imread(pic_path, num) 
# 第一个参数为图片路径,第二个参数为以什么方式读入图片,1为彩色,0位黑白,默认为彩色
# 返回numpy数组,彩色图片为三维numpy数组,黑白为二维numpy数组,数组存储方为BGR, 需要将存储类型改成RGB的形式才能正常显示原图的颜色

参看所读取图片的高宽

img.shape #返回一个元组(高,宽,像素的通道数)
img.shape[0]为高,img.shape[1]为宽

显示图片

cv2.imshow(window_name, pic_data)新建一个窗口,显示图片,很短时间内图片消失
	# 第一个参数为窗口名字,第二个参数为图片数据,为一个Numpy数组

显示图片1000ms

cv2.imshow(window_name, pic_data)
	cv2.waitKey(1000)
	cv2.destroyAllWindows()

显示图片,直到按下q键时,关闭

cv2.imshow(window_name, pic_data)
	key = cv2.waitKey(0)
	if(key == ord('q'):
			cv2.destroyAllWindows()

调整图片大小

new_img = cv2.resize(img, (width, height)) #img,和new_img为调整大小前后的numpy数组

获取图片的RGB

bgr = img[height,width] bgr为一个元组(blue, green, red),opencv读取图片后得到的数组保存类型为bgr,img为图片的numpy数组

延迟

cv2.waitKey(x) #延迟xms,(不断刷新图像),在此期间,如果有键按下,则立即结束并返回该键的ASCII码,否则返回-1。x == 0时,延迟为无穷大

如需要,用ord()检测按下了什么键:将一个字符转化为ascii数值(0~255)。eg:ord(‘1’) == 49
销毁创建的所有的窗口(一般显示图片)

cv2.destroyAllWindows()

保存图片

cv2.imwrite(save_path, pic_data) 第一个参数为保存路径,第二个为要保存的图片的numpy数据

彩色图片->黑白图片

gray_pic = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  bgr to gray 
# gray_pic 和frame都是numpy数组

将图片写入视频(ftp帧率=30的半小时以内的avi视频可以生成,不能添加音频)

videoWriter = cv2.VideoWriter(视频名, 视频编码格式, 帧播放速率(每秒帧数),写入帧大小(为元组(高,宽)),缺省值为:是彩色的吗)
视频编码格式参数:cv2.VideoWriter_fourcc(),fourcc为four-characte codes 四字符代码: ('M','J','P','G') 同 cv2.cv.FOURCC (*'MJPG')。
eg: 

#videoWriter = cv2.VideoWriter('t.avi', cv2.VideoWriter_fourcc(*'MP42'), 30, (1000,1000), isColor=False)
videoWriter = cv2.VideoWriter('t.avi', -1, 30, (1000,1000), 0)0代表灰,1代表彩
videoWriter.write(frame) #写入。 frame为一帧的numpy数组
#MP42编码的avi格式,体积最小

结束写入视频时,要释放

videoWriter.release()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值