OpenCV python(一):安装 && 获取、显示、保存图像

一、安装opencv-python

opencv-python是包含了基本使用函数的opencv库,而opencv-contrib-python则是包含了其他一些图像处理算法函数的opencv扩展库。

同时按下win和R键,并输入打开cmd,使用如下pip命令安装opencv-python。

1、安装opencv-python

pip install opencv-python

2、安装opencv-contrib-python

要注意的是安装opencv-contrib-python需要与opencv-python版本保持一致,可在下述命令后面加上 ==版本号 ,以此保持版本一致。查看opencv-python版本可使用pip list的方法,下文第3步会介绍到。

pip install opencv-contrib-python
指定安装版本:
pip install opencv-contrib-python==对应的版本号

3、查看版本号并确认安装成功

使用pip list可查询到安装的python库,会携带其对应的版本号。

pip list

如下图所示。
在这里插入图片描述
确认是否安装成功:

1、在cmd中输入python
2、import cv2

如下图所示,导入cv库后不会报错即表示opencv-python安装成功。
在这里插入图片描述

二、获取并显示图像

1、对应函数解析

1、img = cv2.imread('xx.jpg', 0)	#导入图像(图像路径,读取图像类型)
'''
	图像类型如下所示:
	cv2.IMREAD_COLOR / 1	# 彩色图
	cv2.IMREAD_GRAYSCALE / 0	# 灰度图
'''
2、video = cv2.VideoCapture(0)		
	#选择视频或摄像头:()中 0 表示第一个摄像头,也可写入视频路径
3、ret, img = video.read()	
	# 获取摄像头或视频的一帧,ret判断获取是否成功,成功则为True;img为获取的图像
4、cv2.imshow('img', img)	#显示图像(显示名称,显示对象)
5、cv2.waitKey(1)	#等待时间ms(可实现键操作,下文将会介绍)
6、cv2.imwrite('xx.jpg', img)	#保存(保存文件名,保存对象)
7、cv2.VideoCapture.isOpened()		#判断摄像头能否打开,第3个函数的ret也可实现此功能

以下是我平时需要用到opencv时的初始代码框架中的一部分,即获取图像,显示图像,判断摄像头是否开启等基本操作。分为使用摄像头或视频获取图像和单纯导入图像。

2、摄像头或视频获取图像

import cv2  # 导入opencv库

if __name__ == '__main__':
    video = cv2.VideoCapture(0)  # 选择摄像头0、1... 或 选择视频路径
    while True:
        ret, img = video.read()
        # 获取摄像头或视频的一帧,ret判断获取是否成功,成功则为True;img为获取的图像
        if ret:
            cv2.imshow("img", img)  # 显示图像(显示名称,显示对象)
            cv2.waitKey(1)  # 等待时间
        else:
            # print("摄像头未打开。")
            pass    # 图像获取失败,可能未接入摄像头
            

3、直接导入图像

import cv2  # 导入opencv库

if __name__ == '__main__':
    while True:
        img_RGB = cv2.imread('img/0.jpg', 1)    # 获取路径img/0.jpg的图像,图像类型为RGB图像
        img_g = cv2.imread('img/0.jpg', 0)  # 获取路径img/0.jpg的图像,图像类型为灰度图

        '''
        # 此处为改变图像大小,在此处使用是为了演示方便,为图像预处理阶段,与获取图像无关
        img_RGB = cv2.resize(img_RGB, (0, 0), fx=0.5, fy=0.5)  # 改变图像shape
        img_g = cv2.resize(img_g, (0, 0), fx=0.5, fy=0.5)  # 改变图像shape
        '''

        cv2.imshow("RGB", img_RGB)  # 显示彩图
        cv2.imshow("gray", img_g)  # 显示灰度图
        cv2.waitKey(1)  # 等待时间
        

效果如下图所示:
在这里插入图片描述

4、cv2.waitKey()

关于这个opencv的等待函数,其括号内为等待时间,单位为ms,可获取其返回值并进行其他操作。

(1)、用在退出循环上

如下所示:

key = cv2.waitKey(1)
if key & 0xff == 27:	# 27为ESC,可查看ASCII表
	break
(2)、用在图像采集保存上

如下所示:

key = cv2.waitKey(1)
if key & 0xff == 105:	# 105为字母i,可查看ASCII表
	cv2.imwrite("0.jpg", img)	# 保存图像
	number += 1

或:

key = cv2.waitKey(1)
if key == ord('i'):		# 判断字母i
	cv2.imwrite("0.jpg", img)	# 保存图像
	number += 1

关于上述的ASCII码,进入此链接并下拉后可看到ASCII表,对应表上的十进制数即可查询:ASCII表链接
图像采集例程如下:

import cv2  # 导入opencv库

number = 0

if __name__ == '__main__':
    video = cv2.VideoCapture(0)  # 选择摄像头0、1... 或 选择视频路径
    while True:
        ret, img = video.read()
        # 获取摄像头或视频的一帧,ret判断获取是否成功,成功则为True;img为获取的图像
        if ret:
            cv2.imshow("img", img)  # 显示图像(显示名称,显示对象)
            key = cv2.waitKey(1)  # 等待时间,输入'0'表示任意键终止
            if key & 0xff == 105:	# 105为字母i,可查看ASCII表
                cv2.imwrite("data/%d.jpg" % number, img)
                	# 保存图像至data文件夹,名字按先后采集顺序从0开始递增
                number += 1
        else:
            # print("摄像头未打开。")
            pass    # 图像获取失败,可能未接入摄像头
            

本人是一名学生,目前正在学习中,本篇文章也算是我的学习笔记,如有错误的话还请指正。

猜你喜欢

转载自blog.csdn.net/xztli/article/details/126145763
今日推荐