IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【OpenCV学习】初识OpenCV -> 正文阅读

[人工智能]【OpenCV学习】初识OpenCV

🌈据说,看我文章时 关注、点赞、收藏帅哥美女们 心情都会不自觉的好起来。

前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
?个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:OpenCV从入门到放弃 ,一个学习OpenCV的专栏~

人生苦短,我用python

安装 OpenCV

博主学习的是通过虚拟环境来学习 OpenCV ,使用 3.4.1.15 这个版本。因为在 3.4.2 版本之后有些算法申请了专利,就用不了。
3.4.1.15 这个版本目前最高只支持到 Python3.6 ,博主就另外又安装了 Python3.6.8 作为学习 OpenCV 使用。

opencv-python 模块的下载页面查找,可以明显发现其 3.4.1.15 版本只支持 Python2.7Python3.4Python3.5Python3.6 这些版本,我们能挑到的最高版本是 Python3.6.8
在这里插入图片描述

在官网 Python官网下载 中找到 Python3.6.8 版本。
在这里插入图片描述

先创建并进入虚拟环境:先要使用 Python3.6.8 安装 pip install virtualenv ,才能创建虚拟环境,然后进入环境的 Scripts 目录,输入 activate 激活当前环境,出现 (OpenCV) 就代表成功进入当前环境了。
然后安装需要的一些模块:pip install opencv-python==3.4.1.15 opencv--contrib-python==3.4.1.15 jupyter matplotlib -i https://pypi.douban.com/simple
其中 opencv-pythonOpenCV 的核心库,另外的 opencv–contrib-python 是拓展库,前期可以先不安装拓展库,然后 jupyter 是网页编辑器,方便可视化, matplotlib 就是可视化库了,图像处理好后可以使用它可视化到 jupyter 的网页上。
安装成功显示:
在这里插入图片描述

安装成功后,pip list 显示的模块。
在这里插入图片描述
在这里插入图片描述

启动 Jupyter

确保我们现在仍然在 Scripts 文件夹内,然后输入 jupyter notebook --notebook-dir='G:/opencvStudy/note' 以指定目录打开 jupyter 网页编辑器,出现类似图下的网页就属于启动成功了(文件列表可能不一样):
在这里插入图片描述

Jupyter 有一些常用的快捷方式:

  • 直接 Enter 只会回车。
  • Ctrl + Enter 将会执行当前单元格。
  • Shift / Alt + Enter 将会执行当前单元格,并在下方新建一个单元格。
  • 在函数处按 Shift + Tab 可以显示简易帮助说明,按两下 Tab 可以显示详细帮助。

创建和销毁窗口

每次使用前,需要导入:

  • import cv2 :可以直接使用,但其 3.4.1.15 版本在 PyCharm 中将不会提示语法:在这里插入图片描述
  • 但如果使用 from cv2 import cv2 :这种导入方法,在 PyCharm 中是可以显示代码提示的(纯手敲大佬请无视此区别):在这里插入图片描述

具体情况还是得看你使用的是哪款编辑器,以及你是否是大佬~

from cv2 import cv2
# 创建窗口。
cv2.namedWindow('window', cv2.WINDOW_NORMAL)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

可以看到有三组共六钟参数,被分同一组的是由0和其他数字组成的 flags
其中 WINDOW_AUTOSIZEWINDOW_NORMAL 表示是自动调整大小(手动不可调)或是手动调整窗口;
WINDOW_FREERATIOWINDOW_KEEPRATIO 表示在调整的时候不考虑图像比例(铺满窗口)或是保持图像比例,ratio 就是比例的意思;
WINDOW_GUI_NORMALWINDOW_GUI_EXPANDED 表示绘制窗口是就方法(没有状态栏和工具栏)或是增强型GUI。(目前我还没看出来新方法哪里增强了)

from cv2 import cv2
# 创建窗口。
cv2.namedWindow('window', cv2.WINDOW_NORMAL)
# 更改窗口的大小。
cv2.resizeWindow('window', 800, 600)

更改窗口大小是先宽后高。

from cv2 import cv2
# 创建窗口。
cv2.namedWindow('window', cv2.WINDOW_NORMAL)
# 更改窗口的大小。
cv2.resizeWindow('window', 800, 600)
key = cv2.waitKey(0)
if key == ord('q'):
    print('销毁窗口')
    cv2.destroyAllWindows()

waitKey 接受一个毫秒参数,如果参数为非正整数,就一直等下去,如果指定了正整数(只能接受整数,浮点数会报错),则会等待这么长时间,如果没有等待到按键,则退出等待并返回 -1 。
如果等待到了按键,则会返回按键的 ascii 码值(一个整数值),ord('') 就是返回字符的 ascii 码值:
在这里插入图片描述
也只会接受 ascii 码表里的按键,像 CtrlShiftAlt 这些就不会接收了,而且这些都是功能键,单独接收没有意义。

图片在 OpenCV 中的表现

首先读取的图片类型支持下图中的这些:

在这里插入图片描述

from cv2 import cv2
# 默认是按照彩色图片来读取的。
cat = cv2.imread('./cat.jpeg')
# numpy的ndarray。
print(cat)

读取出来是一个三维数组:

在这里插入图片描述
这里正好说明一下 numpy 的数组形状和 cv2 的有什么不同:
cv2 的参数都是先给宽,再给高;
numpy 的参数都是先给高,再给宽,因为三维数组的格式化打印,
是最外层数组是由多行组成,相当于是图片的高;
中间层数组每个是由多列组成,相当于是图片的宽。
然后颜色 R 、G 、B 都是由 0 - 255 的数组成的,换算成无符号位的二进制是 00000000 - 11111111,所以 opencv 读取出来的彩色图片会被处理成类型是uint8(8位二进制整数)的三维数组。

再来看看 matplotlib 对它的显示效果:

在这里插入图片描述
再看看原图:

在这里插入图片描述
是不是发现这个猫有明显的颜色变化?
这是因为 opencv 读进来的图片数据的通道不是默认的RGB,而是BGR,完全相反的颜色数组,要想正常显示,可以对数组的最内层施加反向操作:

from cv2 import cv2
import matplotlib.pyplot as plt
# 默认是按照彩色图片来读取的。
cat = cv2.imread('./cat.jpeg')
# numpy的ndarray。
for row in range(len(cat)):
     for col in range(len(cat[row])):
         cat[row][col] = cat[row][col][::-1]
plt.imshow(cat)
plt.show()

经过这样处理后的颜色就正常了,可爱的猫咪又出现了~:
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 09:57:29  更:2022-05-14 09:57:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:58:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码