Python 计算机视觉(二) —— OpenCV 基础

目录

1. 安装配置

2. OpenCV 基础语法

(1)读取图像并显示

 (2)调整显示窗口大小

(3)调整图像尺寸大小

(4)图像灰度处理

3. 几何图形绘制

(1)绘制线段

(2)绘制矩形

(3)绘制圆形

(4)绘制椭圆

(5)添加文本 

总结


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  

如果想对图像颜色进行调整,可以参考下面的文章:

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 中的几个基础语法(读取图像、显示图像、改变图像大小等)以及绘制一些简单的几何图像(线段、圆形、椭圆、矩形等),为后面的学习打下基础

猜你喜欢

转载自blog.csdn.net/qq_52309640/article/details/120727820