opencv-start
import cv2 as cv
img = cv.imread("./images/1.jpg") # 读入图片
# 创建一个窗口,第一个参数是窗口名, 第二个参数代表自适应大小,也可指定尺寸
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
# 指定窗口显示图片,(窗口名, 图片)
cv.imshow("input image", img)
# 等有键输入或者1000ms后自动将窗口消除,0表示只有键输入才结束窗口
# 返回值为输入键的ASCII值
# 当指定时间内没有任何输入时返回-1
cv.waitKey(1000)
# 删除我们建立的所有窗口。
# 删除特定的窗口可以使用 cv.destroyWindow(要删除的窗口名)
cv.destroyAllWindows()
图像的加载与保存
import cv2 as cv
import time
def get_img_info(image):
print("图像类型:", type(image))
print("shape:", image.shape)
print("size: w*h = ", image.size)
print("dtype:", image.dtype)
print(image)
def save_image(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # 将图片转为灰度图
cv.imwrite("./images/output.png", gray) # 将保存到output.png
# 获取视频
def video_demo():
# capture.get(propId) 可以获得视频的参数信息propId: 0~18
# capture.set(propId,value) 修改指定参数的值
# capture.get(3) 和 capture.get(4) 查看每一帧的宽和高
# ret=capture.set(3,320) 和 ret=capture.set(4,240) 将宽高修改为 320X240
# 参数是摄像头的索引号,或是视频文件的路径
capture = cv.VideoCapture(0)
print("type:", type(capture))
while True:
# 获取相机图像
# ret的值为True/False用来标记是否读取成功
# frame保存的是每一帧图片
ret, frame = capture.read()
# 1代表将图片水平反转, 0为竖直
frame = cv.flip(frame, 1)
print("ret:", ret)
# 将每一帧图片放入到video窗口
cv.imshow("window img", frame)
# waitKey可以用来控制视频播放时间(即每一帧的刷新时间)
c = cv.waitKey(25)&0xFF # 64bit系统需要加&0xFF
if c == 27: # Esc
break
# 保存视频
def save_video():
cap = cv.VideoCapture(0)
# 用来确定视频的编码格式,四个字符用来表示压缩帧的codec
fourcc = cv.VideoWriter_fourcc(*"mp4v")
# 参数: ("路径", 编码格式, 播放频率, 帧的大小, 是否保存为彩图默认为True)
out = cv.VideoWriter("./images/output.mp4", fourcc, 25.0, (640, 480))
while cap.isOpened(): # 是否初始化成功
ret, frame = cap.read()
if not ret:
break
out.write(frame)
print(frame.shape)
cv.imshow('frame', frame)
if cv.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
out.release()
if __name__=="__main__":
# image = cv.imread("./images/1.jpg")
# cv.namedWindow("window img", cv.WINDOW_AUTOSIZE)
# cv.imshow("window img", image)
# get_img_info(image)
# save_image(image)
# video_demo()
save_video()
cv.waitKey(1000)
cv.destroyAllWindows()
cv.waitKey(0)
cv.waitKey(0)
cv.waitKey(0)
cv.waitKey(0)
cv.VideoWriter_fourcc() 函数的参数不同的系统所支持的编码不同
分为以下几种
cv2.VideoWriter_fourcc(‘P’,‘I’,‘M’,‘1’) = MPEG-1 codec
cv2.VideoWriter_fourcc(‘M’,‘J’,‘P’,‘G’) = motion-jpeg codec --> mp4v
cv2.VideoWriter_fourcc(‘M’, ‘P’, ‘4’, ‘2’) = MPEG-4.2 codec
cv2.VideoWriter_fourcc(‘D’, ‘I’, ‘V’, ‘3’) = MPEG-4.3 codec
cv2.VideoWriter_fourcc(‘D’, ‘I’, ‘V’, ‘X’) = MPEG-4 codec --> avi
cv2.VideoWriter_fourcc(‘U’, ‘2’, ‘6’, ‘3’) = H263 codec
cv2.VideoWriter_fourcc(‘I’, ‘2’, ‘6’, ‘3’) = H263I codec
cv2.VideoWriter_fourcc(‘F’, ‘L’, ‘V’, ‘1’) = FLV1 codec