栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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:PythonStudyOfOpencv琪琳.jpeg')   #读取图像位置
cv2.namedWindow("demo")                                  #对显示图像的窗口进行命名
cv2.imshow("demo", img)                                  #显示图像
cv2.waitKey(delay = 0)                                   #无限期等待下一个命令

运行上面所示的代码(当然读取图像路径要和你的图像存储位置一致) 

我们可以得出。。。。报错了!!

报错内容如下

cv2.error: OpenCV(4.5.3) C:UsersrunneradminAppDataLocalTemppip-req-build-sn_xpupmopencvmodulesimgprocsrccolor.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
 

其实这是因为我们的存储路径中包含中文导致的,把图像命名为英文并修改路径即可

import cv2    # 调用opencv包
img = cv2.imread('E:PythonStudyOfOpencvqilin.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:PythonStudyOfOpencvqilin.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 中的几个基础语法(读取图像、显示图像、改变图像大小等)以及绘制一些简单的几何图像(线段、圆形、椭圆、矩形等),为后面的学习打下基础

 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/321215.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号