Python 计算机视觉 —— OpenCV 基础
Posted 一马归一码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 计算机视觉 —— OpenCV 基础相关的知识,希望对你有一定的参考价值。
目录
1. 安装配置
打开 Pycharm --> 点击 File --> 点击 Settings
点击 Project Interpreter --> 点击 + 号
搜索 OpenCV 选择合适的进行安装即可
2. OpenCV 基础语法
(1)读取图像并显示
代码如下:
我都进行了注释,以大家的聪明才智我想是小菜一碟
import cv2 # 调用opencv包
img = cv2.imread('E:\\Python\\StudyOfOpencv\\琪琳.jpeg') #读取图像位置
cv2.namedWindow("demo") #对显示图像的窗口进行命名
cv2.imshow("demo", img) #显示图像
cv2.waitKey(delay = 0) #无限期等待下一个命令
运行上面所示的代码(当然读取图像路径要和你的图像存储位置一致)
我们可以得出。。。。报错了!!
报错内容如下
cv2.error: OpenCV(4.5.3) C:\\Users\\runneradmin\\AppData\\Local\\Temp\\pip-req-build-sn_xpupm\\opencv\\modules\\imgproc\\src\\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
其实这是因为我们的存储路径中包含中文导致的,把图像命名为英文并修改路径即可
import cv2 # 调用opencv包
img = cv2.imread('E:\\Python\\StudyOfOpencv\\qilin.jpeg') #读取图像位置
cv2.namedWindow("demo") #对显示图像的窗口进行命名
cv2.imshow("demo", img) #显示图像
cv2.waitKey(delay = 0) #无限期等待下一个命令
然后我们按回车键就可以退出当前的窗口
至于按下回车就可以退出窗口与我们前面设置的 delay 有关
delay > 0:窗口等待delay 毫秒;
delay < 0:等待键盘单击;
delay = 0:无限期等待;
(2)调整显示窗口大小
从显示出来的图像我们可以看出,窗口的尺寸过大,导致整个屏幕都没办法完全显示出来,所以我们要尝试改变窗口的尺寸并进行显示
改变窗口大小使用的是函数:
cv2.resizeWindow("windowname", width, height)
得到效果如下,注意是对窗口尺寸大小进行调整而不是图像尺寸大小
(3)调整图像尺寸大小
此处参考: Opencv-python(cv2)改变图像尺寸的cv2.resize()函数
上面修改窗口的尺寸后虽然有效果,但图像的大小不进行修改则会对显示的图像进行截取,没办法让我们观察到完整的图像
调整图像的大小,我们主要使用到的函数是 cv2.resize() ,对其一些参数进行调整,得到想要的图像
data = cv2.resize(img, dsize = None, fx = 0.5, fy = 0.5,interpolation = cv2.INTER_LINEAR) #将显示的图像宽和高都变为一半
cv2.imshow("demo", data) #显示图像
运行后就可以得到如下的图像:
(4)图像灰度处理
import cv2 # 调用opencv包
img = cv2.imread('E:\\Python\\StudyOfOpencv\\qilin.jpeg') #读取图像位置
cv2.namedWindow("demo") #对显示图像的窗口进行命名
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #对图像进行灰度处理
cv2.imshow("demo", img_gray) #显示灰度图像
cv2.waitKey(delay = 0) #无限期等待下一个命令
其中下面指出的这一句代码
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #对图像进行灰度处理
它是对图像的通道进行修改,如果需要加强学习的可以参考:cvCvtColor函数
得到如下的灰度图像
3. 几何图形绘制
(1)绘制线段
使用 cv2.line() 函数就可以绘制线段
import cv2 # 调用opencv包
import numpy as np
img1 = np.ones((500, 500, 3), np.uint8) #创建一张图像
cv2.line(img1, (140, 160), (140, 320), (0, 0, 255), 3, cv2.LINE_AA) #绘制线段
cv2.imshow(" Image ", img1)
cv2.waitKey(delay = 0)
得到下面的图像:
然后我们对代码进行简单修改,观察图像发生的改变:
import cv2 # 调用opencv包
import numpy as np
img1 = np.ones((500, 500, 3), np.uint8) #创建一张图像
cv2.line(img1, (140, 160), (140, 320), (0, 255, 0), 3, cv2.LINE_AA) #绘制线段
cv2.imshow(" Image ", img1)
cv2.waitKey(delay = 0)
观察上面两处代码的不同,注意在 cv 库中改变颜色是 BGR 而不是 RGB
如果想对图像颜色进行调整,可以参考下面的文章:
下面整个活儿:
img1 = np.ones((500, 500, 3), np.uint8) #创建一张图像
cv2.line(img1, (120, 40), (300, 40), (255, 0, 0), 3, cv2.LINE_AA)
cv2.line(img1, (300, 40), (290, 180), (255, 0, 0), 3, cv2.LINE_AA) #绘制线段
cv2.line(img1, (195, 50), (185, 190), (255, 0, 0), 3, cv2.LINE_AA) #绘制线段
cv2.line(img1, (185, 190), (320, 190), (255, 0, 0), 3, cv2.LINE_AA) #绘制线段
cv2.line(img1, (320, 190), (310, 340), (255, 0, 0), 3, cv2.LINE_AA) #绘制线段
cv2.line(img1, (310, 340), (290, 320), (255, 0, 0), 3, cv2.LINE_AA) #绘制线段
cv2.line(img1, (120, 280), (280, 265), (255, 0, 0), 3, cv2.LINE_AA) #绘制线段
cv2.imshow(" Image ", img1)
cv2.waitKey(delay = 0)
(2)绘制矩形
首先像上面演示的那样可以根据线段的起点和终点绘制矩形
也可以使用 cv2.rectangle(图像,矩形左上角坐标,矩形右下角坐标,颜色) 函数进行矩形的绘制:
cv2.rectangle(img1, (100, 200), (280, 280), (0, 255, 0), 3, cv2.LINE_AA)
cv2.rectangle(img1, (80, 180), (300, 300), (0, 255, 0), 3, cv2.LINE_AA)
cv2.imshow(" Image ", img1)
cv2.waitKey(delay = 0)
(3)绘制圆形
绘制圆只要知道其圆心坐标和半径就可以了
使用 cv2.circle(图像,圆心坐标,半径,颜色,是否填充) 就可以绘制圆了
cv2.circle(img1, (250, 250), 100, (0, 0, 255), -1) #-1代表进行填充
cv2.imshow(" Image ", img1)
cv2.waitKey(delay = 0)
(4)绘制椭圆
使用 cv2.ellipse(图像,圆心坐标,长轴&短轴,起始角度,终止角度,显示弧长的角度,颜色,是否填充)就可以了
cv2.ellipse(img1, (256, 256), (100, 50), 0, 0, 360, (0, 255, 0), -1)
cv2.imshow(" Image ", img1)
cv2.waitKey(delay = 0)
(5)添加文本
使用 cv2.puttext(图像,绘制的文字,位置,字体,缩放,颜色,线宽) 就可以进行文本的添加了
下面在上图中添加文本
cv2.putText(img1, 'OpenCV', (230, 450), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2, cv2.LINE_AA)
总结
这篇文章主要介绍了 OpenCv 中的几个基础语法(读取图像、显示图像、改变图像大小等)以及绘制一些简单的几何图像(线段、圆形、椭圆、矩形等),为后面的学习打下基础
以上是关于Python 计算机视觉 —— OpenCV 基础的主要内容,如果未能解决你的问题,请参考以下文章
计算机视觉OpenCV 4高级编程与项目实战(Python版):图像处理基础