1 前言
上一篇介绍了在WIN10上,用VS2022编写C++测试程序,调用OpenCV库加载显示图片,本篇我们接着看一下,使用Python如何调用OpenCV库接口,加载显示图片。
2 模块安装
在编写程序之前,先要在PC上安装Python版本的OpenCV模块。
打开Windows PowerShell,使用如下命令下载安装
pip install opencv-python
安装完成截图
显示已成功安装opencv-python-4.6.0.66和numpy-1.23.2,我们来用python检测一下
import导入模块的名称为“cv2”,打印cv2版本信息,如图是4.6.0,没错。
接下来使用下边命令安装opencv-contrib-python。那么它与opencv-python有啥区别呢?opencv-python是只包含了主要模块的包,opencv-contrib-python包含了主要模块以及扩展模块,扩展模块主要是包含了一些带专利的收费算法(如shift特征检测)以及一些在测试的新的算法(稳定后会合并到主要模块)。如果您用不到扩展模块,这个也可以不安装。
pip install opencv-contrib-python
安装好了之后,就可以用创建测试项目编写程序了。
3 创建配置项目
下来我们用VS2022来创建和编辑python测试程序,您也可以用其它IDE编写程序。
打开VS2022,创建新项目。
创建Python应用程序
配置项目名称和路径
创建好项目后,发现默认使用的解释器是Python 3.7,在此将其改成Python 3.10。
4 编写程序
将以下代码,编辑输入到show_img.py文件中。
# -*- coding: utf-8 -*-
###########################
#OpenCV关键函数说明
#
#1 读取图像
# cv2.imread(filename, flags=None)
# filename:文件路径
# flags:读取方式,有以下3种选项
# flags可以不输入,此时默认为cv2.IMREAD_COLOR,缺省方式,读取图像为BGR 8-bit格式
# flags设置为cv2.IMREAD_GRAYSCALE,读取图像为转换为灰度图
# flags设置为cv2.IMREAD_UNCHANGED,图像格式不做任何改变,可用在读取带alpha通道的图片
#
#2 创建画布
# cv2.namedWindow(winname, flags=None)
# winname:窗口名称
# flags:窗口大小控制
# flags取值cv2.WINDOW_NORMAL(或写 0 ),窗口以固定大小显示,但可以用鼠标拖动边缘来拉伸
# flags取值cv2.WINDOW_AUTOSIZE(或写 1,为默认值),窗口大小随图片尺寸变化而自适应变化,且不可用鼠标拖拽动态改变大小
#
#3 显示图像
# 读取图像后,就将图像转为了numpy多维数组的格式
# cv2.imshow(winname, mat)
# winname:设置好的一张特定名称的画布窗口
# mat:读取的numpy多维数组
#
#4 按键等待
# cv2.waitKey(0)
# 参数“0”,一直等待直到按下任意按键后,才继续后面的程序执行
# 如果参数是正整数,则代表等待相应数值的毫秒时间后,继续执行后面的程序
#
###########################
import cv2
def show_img(path):
img = cv2.imread(path)
cv2.namedWindow('img', 0)
cv2.imshow('img', img)
cv2.waitKey(0)
if __name__ == '__main__':
img_file = 'xiang_ri_kui.jpg'
show_img(img_file)
VS中如截图
其中,xiang_ri_kui.jpg是工程当前路径下的一张jpg图片。
编辑好代码后,启动运行程序,效果如下
鼠标移到图片窗口右下角,可以用鼠标拖拽来放大和缩小图片。