数字图像处理学习笔记1:opencv在python环境的应用基础

本次学习内容是记录数字图像处理初学知识,包括基本的环境搭建,可能遇到的问题和解决方法以及基本的读取图片视频等opencv操作实现
函数查询网址:地址

目录

  1. 软件下载
  2. 软件安装
  3. anaconda编程环境选择和搭建
  4. opencv的添加
  5. pycharm的配置及工程建立
  6. 图像的读取显示保存等基本操作
  7. 视频读取操作

1.软件下载

环境是基于win10系统的anaconda+pycharm,python版本为3.7.
anaconda采用2019.10月的anaconda3版本,下载源在清华镜像或者公众号
清华镜像源anaconda
pycharm是2019版本,来自软件管家公众号。

2.软件安装

pycharm按照教程安装即可,anaconda3在安装时出现下图时
在这里插入图片描述
建议勾选两个勾,可以避免添加环境变量。

3.anaconda编程环境选择和搭建

下图中右边绿色√的就是已经在base环境里面安装的包了,我们学习需要keras-gpu系列的和opencv的包,先在里面all里搜索keras-gpu(电脑要有显卡,集显也可),由于在这个版本的anaconda中装keras-gpu这个包,点击下载后会自动安装关联的tensor等包,所以只需要这一个
在这里插入图片描述
anaconda的下载源(即资源链接)是官方的default,一般下载很慢,所以要换成清华镜像
这里的方法是用一句命令在anaconda prompt中使用

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

此时可以通过在prompt中重新输入

conda config --show-sources

展示出现在base所含的源在这里插入图片描述
正常情况下应该和这个一致,注意有两个TRUE
很多人没有下面的那个true通常还需要使用下面的命令进行添加链接

conda config --set show_channel_urls yes

有两个源之后在anaconda的软件中的channel可以看到有两个,可以删掉default
搜索需要的包keras-gpu安装就行了

4.opencv的添加

在anaconda中搜索的opencv无法安装,应该是因为python3.7还没有对应的下载源,这里可以使用pip命令的方式安装。

openCV库 下载地址 点这里跳转
opencv_python‑3.4.2‑cp37‑cp37m‑win_amd64.whl(cp37指的是python的版本,win_amd64是指python是64位的,也有可能有人64位的系统装了32位的python,这时候就需要装win32的版本)
我是python3.7的所以文件名要找cp37的,3.4.2可以不用管,注意x64位版本。

下载后放到anaconda软件的安装目录下的site-package文件夹里面,然后在cmd里面通过找到该路径(如果anaconda在D盘的话输入D: 回车 跳转到D目录下再输入cd 路径跳转到包的目录,最后通过pip install 文件名(要带后缀whl的文件名))

安装可以通过以下方法验证:
cmd->输入python回车->import cv2 +回车
不报错的话就可以了

5.pycharm的配置及工程建立

打开pycharm后可以新建工程,在工程中新建python file即py代码文件,现在需要把编程环境引用到工程里,在设置中有个工程/项目选型里面有个project interpreter选型里面可以选择齿轮,add一个环境,我这里选择的是conda environment->exist environment里面选择anaconda安装目录里的python.exe就行了。

在这里插入图片描述
上图就是已经添加进来了,接下来就可以开始编程了。

6.图像的读取显示保存等基本操作

opencv手册
1)图片操作命令:
cv2.imread(文件名,标记)读入图像
标记0灰度图,1为原图

import cv2 
img = cv2.imread('45.jpg',0) 

45.jpg这种直接输入文件名的需要将其放入工程也可以如下方式操作

img = imread("C:/daima practice/opencv/mat3/mat3/image4.jpg",1) #以路径方式读取原图

imshow(“显示灰度图”,img)
参数1:显示图片的窗口名称。
参数2:储存图片数据的对象。

  • cv2.waitKey()等待键盘输入,为毫秒级等待按下函数:参数如果写负数或者0。当显示图片后,按下任意键后程序退出。如果参数写为3000就是3秒后程序自动退出。
  • cv2.destroyAllWindows()可以轻易删除任何我们建立的窗口,括号内输入想删除的窗口名

cv2.namedWindow(‘窗口名’,cv2.WINDOW_NORMAL)
创建一个窗口

cv2.imwrite(‘文件名.格式’,对象)
将对象保存为指定文件
eg:

k = cv2.waitKey(0)
if k==27:
		cv2.destroyAllWindows()  #wait for ESC key to exit
elif k == ord('s'):
		cv2.imwrite('46.png',img)  #wait for 's' key to save and exit
        cv2.destoryAllWindows()

另外在plt中也有对应的方法

plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([])  # 隐藏 x 轴和 y 轴上的刻度值
plt.show()#另有plt.title(‘名字’)的方法添加标题

PS:imshow()接收一张图像,只是画出该图,并不会立刻显示出来。imshow后还可以进行其他draw操作,比如scatter散点等。所有画完后使用plt.show()才能进行结果的显示。

7.视频读取操作

1)摄像头获取视频

import cv2
cap = cv2.VideoCapture(0)#*0为默认摄像头,1可以更换来源*

while True:
    # 逐帧捕获
    ret, frame = cap.read()
    # 如果正确读取帧,ret为True
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break
    gray = cv2.cvtColor(frame , cv2.COLOR_BGR2GRAY)#取灰度图
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) &0xFF ==ord('q'):  #按q键退出
    	break
#当任何事被做则退出
cap.release()
cv2.destroyAllWindows()

注:可以使用cap.get(propId)来获取视频的一些参数信息。propId可以是0到18之间的任何数,每一个数代表一个属性,自己可以尝试一下。
其中一些值可以使用cap.set(propId,value)来修改,例如cap.get(3)和cap.get(4)来查看每一帧的宽和高,默认是640x480。我们可以使用ret=cap.set(3,320)和ret = cap.set(4,240)来把宽和高改成320x240。
但是要在取帧以前

cv2.flip(frame,1) #镜像翻转

2)通过视频文件打开视频
只需要将cv2.VideoCapture的参数改为视频文件名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值