当前位置:   article > 正文

Python 计算机视觉(二) —— OpenCV 基础_cv2.error:opencv

cv2.error:opencv

目录

 

1. 安装配置

2. OpenCV 基础语法

(1)读取图像并显示

 (2)调整显示窗口大小

(3)调整图像尺寸大小

(4)图像灰度处理

3. 几何图形绘制

(1)绘制线段

(2)绘制矩形

(3)绘制圆形

(4)绘制椭圆

(5)添加文本 

总结


1. 安装配置

打开 Pycharm --> 点击 File --> 点击 Settings

点击 Project Interpreter --> 点击 + 号

 

搜索 OpenCV 选择合适的进行安装即可

2. OpenCV 基础语法

(1)读取图像并显示

代码如下:
我都进行了注释,以大家的聪明才智我想是小菜一碟

  1. import cv2 # 调用opencv包
  2. img = cv2.imread('E:\Python\StudyOfOpencv\琪琳.jpeg') #读取图像位置
  3. cv2.namedWindow("demo") #对显示图像的窗口进行命名
  4. cv2.imshow("demo", img) #显示图像
  5. 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'
 

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

  1. import cv2 # 调用opencv包
  2. img = cv2.imread('E:\Python\StudyOfOpencv\qilin.jpeg') #读取图像位置
  3. cv2.namedWindow("demo") #对显示图像的窗口进行命名
  4. cv2.imshow("demo", img) #显示图像
  5. 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() ,对其一些参数进行调整,得到想要的图像

  1. data = cv2.resize(img, dsize = None, fx = 0.5, fy = 0.5,interpolation = cv2.INTER_LINEAR) #将显示的图像宽和高都变为一半
  2. cv2.imshow("demo", data) #显示图像

运行后就可以得到如下的图像:

(4)图像灰度处理

  1. import cv2 # 调用opencv包
  2. img = cv2.imread('E:\Python\StudyOfOpencv\qilin.jpeg') #读取图像位置
  3. cv2.namedWindow("demo") #对显示图像的窗口进行命名
  4. img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #对图像进行灰度处理
  5. cv2.imshow("demo", img_gray) #显示灰度图像
  6. cv2.waitKey(delay = 0) #无限期等待下一个命令

其中下面指出的这一句代码

img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)          #对图像进行灰度处理

它是对图像的通道进行修改,如果需要加强学习的可以参考:cvCvtColor函数

得到如下的灰度图像 

3. 几何图形绘制

(1)绘制线段

使用 cv2.line() 函数就可以绘制线段

  1. import cv2 # 调用opencv包
  2. import numpy as np
  3. img1 = np.ones((500, 500, 3), np.uint8) #创建一张图像
  4. cv2.line(img1, (140, 160), (140, 320), (0, 0, 255), 3, cv2.LINE_AA) #绘制线段
  5. cv2.imshow(" Image ", img1)
  6. cv2.waitKey(delay = 0)

得到下面的图像: 

然后我们对代码进行简单修改,观察图像发生的改变:

  1. import cv2 # 调用opencv包
  2. import numpy as np
  3. img1 = np.ones((500, 500, 3), np.uint8) #创建一张图像
  4. cv2.line(img1, (140, 160), (140, 320), (0, 255, 0), 3, cv2.LINE_AA) #绘制线段
  5. cv2.imshow(" Image ", img1)
  6. cv2.waitKey(delay = 0)

观察上面两处代码的不同,注意在 cv 库中改变颜色是 BGR 而不是 RGB  

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

RGB颜色表

下面整个活儿:

  1. img1 = np.ones((500, 500, 3), np.uint8) #创建一张图像
  2. cv2.line(img1, (120, 40), (300, 40), (255, 0, 0), 3, cv2.LINE_AA)
  3. cv2.line(img1, (300, 40), (290, 180), (255, 0, 0), 3, cv2.LINE_AA) #绘制线段
  4. cv2.line(img1, (195, 50), (185, 190), (255, 0, 0), 3, cv2.LINE_AA) #绘制线段
  5. cv2.line(img1, (185, 190), (320, 190), (255, 0, 0), 3, cv2.LINE_AA) #绘制线段
  6. cv2.line(img1, (320, 190), (310, 340), (255, 0, 0), 3, cv2.LINE_AA) #绘制线段
  7. cv2.line(img1, (310, 340), (290, 320), (255, 0, 0), 3, cv2.LINE_AA) #绘制线段
  8. cv2.line(img1, (120, 280), (280, 265), (255, 0, 0), 3, cv2.LINE_AA) #绘制线段
  9. cv2.imshow(" Image ", img1)
  10. cv2.waitKey(delay = 0)

(2)绘制矩形

首先像上面演示的那样可以根据线段的起点和终点绘制矩形

也可以使用 cv2.rectangle(图像,矩形左上角坐标,矩形右下角坐标,颜色) 函数进行矩形的绘制:

  1. cv2.rectangle(img1, (100, 200), (280, 280), (0, 255, 0), 3, cv2.LINE_AA)
  2. cv2.rectangle(img1, (80, 180), (300, 300), (0, 255, 0), 3, cv2.LINE_AA)
  3. cv2.imshow(" Image ", img1)
  4. cv2.waitKey(delay = 0)

(3)绘制圆形

绘制圆只要知道其圆心坐标和半径就可以了

使用 cv2.circle(图像,圆心坐标,半径,颜色,是否填充) 就可以绘制圆了

  1. cv2.circle(img1, (250, 250), 100, (0, 0, 255), -1) #-1代表进行填充
  2. cv2.imshow(" Image ", img1)
  3. cv2.waitKey(delay = 0)

(4)绘制椭圆

使用 cv2.ellipse(图像,圆心坐标,长轴&短轴,起始角度,终止角度,显示弧长的角度,颜色,是否填充)就可以了 

  1. cv2.ellipse(img1, (256, 256), (100, 50), 0, 0, 360, (0, 255, 0), -1)
  2. cv2.imshow(" Image ", img1)
  3. 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 中的几个基础语法(读取图像、显示图像、改变图像大小等)以及绘制一些简单的几何图像(线段、圆形、椭圆、矩形等),为后面的学习打下基础

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/649139
推荐阅读
相关标签
  

闽ICP备14008679号