目录
一:安装第三方库
可以通过
百度pypi获取相关资源
进入官网,搜索框搜索想要获取的资源
如:博主输入 opencv-contrib
搜索框 输入获取 opencv-contrib 资源
如下图,点击打开opencv-contrib-python 4.6.0.66
左侧 点击 Download files获取资源文件
点击
获取相关资源文件
可以使用最新的版本 当然想要使用历史版本也是可以的,
左侧,选择Release history,查看历史版本,如博主使用的是4.1.0.25
点击
可以查看到历史版本
Download files 中 下载.whl文件
下载的文件必须 放置在不含中文的路径下
如下图,一定要将下载文件放置在不含中文的路径下
Win+R调cmd,命令控制台 输入安装命令 进行安装
详细安装第三方库的教程 可以参考博主的这一篇文章
pip list
可以查看第三方库是否安装成功
如果嫌弃官网资源下载比较慢,可以用下面网址 下载第三方库的资源文件
当然,下载numpy也是可以的,
只需要把网站的opencv改成numpy即可获取相关资源文件
opencv修改numpy即可,如下图所示
二:opencv第三方库的使用
首先,需要导入图片资源文件
方法非常简单,选中图片ctrl+c复制
回到pycharm编辑器,选中工程,ctrl+v粘贴,命名好图片文件名称即可
点击OK确定后,加载入图片资源文件
下面,可以对导入的图片资源文件,进行操作
1.读取图片,获取图片的 宽、高、通道数
示例如下
import cv2 # 导入 opencv
def test1():
# opencv 默认模式 BGR
img_mat = cv2.imread("dog.jpg") # 读取图片
print(img_mat, img_mat.shape) # 获取 宽、高、通道数
test1()
输出结果,如下
[[[233 221 203]
[232 220 202]
[232 220 202]
...
[240 233 213]
[240 233 213]
[240 233 213]]
[[234 221 199]
[234 221 199]
[233 220 198]
...
[241 234 214]
[241 234 214]
[241 234 214]]
[[236 221 195]
[235 220 194]
[235 220 194]
...
[241 234 215]
[241 234 215]
[241 234 215]]
...
[[115 164 172]
[ 91 143 150]
[ 68 123 130]
...
[ 50 50 50]
[ 41 46 45]
[ 65 71 70]]
[[ 55 113 119]
[ 90 150 156]
[ 98 162 167]
...
[ 41 41 41]
[ 28 33 32]
[ 51 57 56]]
[[ 25 87 93]
[ 61 125 130]
[ 77 145 150]
...
[ 56 58 59]
[ 41 46 47]
[ 58 66 66]]] (341, 499, 3)
分析结果 得出
读取图片的 宽为341 高为499 通道数为3
2.读取图片 显示图片
示例如下
import cv2
def test1():
# opencv 默认模式 BGR
img_mat = cv2.imread("dog.jpg") # 读取图片
cv2.imshow("img", img_mat) # 显示图片
cv2.waitKey(0) # 添加延时
cv2.destroyAllWindows() # 关闭所有窗口
test1()
效果展示
3.图片的灰度化处理 压缩内存
示例如下
import cv2
def test1():
# opencv 默认模式 BGR
img_mat = cv2.imread("dog.jpg")
# 图片的灰度化处理 节省内存
img_gray = cv2.cvtColor(img_mat, cv2.COLOR_BGR2GRAY) # 灰度化
cv2.imshow("img", img_gray) # 显示图片
cv2.waitKey(0) # 添加延时
cv2.destroyAllWindows() # 关闭所有窗口
test1()
效果展示
4.获取摄像头并打开,设置按下ESC退出(关闭摄像头)
示例如下
import cv2
def test1():
# 摄像头 VideoCapture参数0
cap = cv2.VideoCapture(0)
while 1:
status, img = cap.read() # 读取返回参数有两个
if status: # 摄像头状态正常
cv2.imshow("img", img) # 显示每一帧图片
key = cv2.waitKey(20) # 延时处理
if key == 27: # ESC的ASCII码值为27
break # 按下ESC结束 退出循环 关闭摄像头
cv2.destroyAllWindows() # 关闭所有窗口
test1()
效果展示
点击关闭按钮无法关闭,
只有按下ESC才可以关闭摄像头及窗口
视频的打开 以及 视频的存储 如下
import cv2
# 打开视频
def open_video(video_path):
cap = cv2.VideoCapture(video_path)
while 1:
status, img = cap.read()
if status:
cv2.imshow("video", img)
key = cv2.waitKey(10)
if key == 27:
break
else:
break
cv2.destroyAllWindows()
cap.release()
# 存储视频
def write_video(video_path):
# 创建一个窗口
cv2.namedWindow("Video")
# 打开摄像头
cap = cv2.VideoCapture(0)
# 分别传入的参数是路径、格式、帧率、视频尺寸
video_writer = cv2.VideoWriter(video_path,
cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'),
cap.get(cv2.CAP_PROP_FPS),
(int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),
int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
)
while 1:
status, img = cap.read()
if status:
video_writer.write(img)
cv2.imshow("Video", img)
key = cv2.waitKey(10)
if key == 27:
break
else:
break
cv2.destroyAllWindows()
cap.release()
if __name__ == "__main__":
# open_video("D:/video_test/1223.avi")
write_video("test1.avi")