1、入门概念:
计算机图形学:如何通过model渲染出图片即图形学
计算机视觉:如何从图片中理解出里面的内容最终形成model,即计算机视觉
2、ffmpeg调用opencv的过程:api的上层是opencv,下层是ffmpeg。对于ffmpeg来说,要调用opencv主要是在filter中进行调用,通过采集模块获取的原始视频帧,通过filter调取opencv进行图像的处理,处理之后进行图像的编码,反之,解码之后拿到视频帧,通过filter调用opencv进行处理,之后再进行视频的渲染
3、opencv调用ffmpeg的过程:opencv调用ffmpeg主要是对于多媒体文件的处理,opencv在处理时需要数据源是原始的视频帧,例如rgb数据、yuv数据。但是对于用户来说,一般用户能给的都是jpg或者png或者视频,opencv显然无法将这些数据进行处理,所以需要调用ffmpeg的解码模块,对这些编码后的图像或者视频进行解码,拿到rgb数据或者yuv数据之后再进行相应的处理
4、安装:需要安装python numpy matplotlib opencv_python
其中numpy主要是用于矩阵的操作,numpy和opencv_python的结合会使得用python操作opencv时速度快
matplotlib主要用于显示
5、创建窗口
namedWindow()
6、显示窗口
imshow()
7、销毁窗口
destroyAllWindows()
8、设定窗口大小。如果不设定默认是图片大小(图片适应窗口大小/窗口适应图片大小)
resizeWindow()
9、加载图片
imread(path,flag)
10、保存图片
imwrite(name,img)
name是要保存的文件名,img是Mat类型
import cv2
cv2.namedWindow('img',cv2.WINDOW_NORMAL)
img = cv2.imread('/Users/lililiee/Desktop/WechatIMG6.jpeg')
#展示图片之后,按q键退出,按s键保存图片,按其他键打印333
while True:
cv2.imshow('img',img)
key = cv2.waitKey(0)
print(key) #是对键盘事件进行delay(ms)的等待(delay=0则为无限等待),若触发则返回该按键的ASSIC码(否则返回-1)
print('q')
print(ord('q'))
if key & 0xFF == ord('q'):
print(111)
break
elif key & 0xFF == ord('s'):
print(222)
cv2.imwrite('/Users/lililiee/Desktop/123.png',img) #将图片保存为123.png
else:
print(333)
cv2.destroyAllWindows()