opencv学习日记(一)

  • 前言
  • 一、opencv是什么?
  • 二、使用步骤
    • 1.简单使用
    • 2.图片色彩模式转换
  • 总结
    • 3.图片数据格式解析
  • 总结(二)

前言

因为我的毕业设计是关于opencv的一个系统设计所以需要学习opencv,特此开贴督促自己学习和做总结


提示:以下是本篇文章正文内容,下面案例可供参考

一、opencv是什么?

来自百度百科:opencv是一个基于Apache2.0许可发行的跨平台计算机视觉和机器学习软件库,轻量且高效----由C和少量的C++构成,同时提供python等编程语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。这里我使用到的是opencv-python。

二、使用步骤

1.简单使用

代码如下(示例):

import cv2 as cvimage = cv.imread("images/lena.png")
cv.imshow("pic", image)
cv.waitKey(0)
cv.destroyAllWindows()

这里就会从我们同级的项目目录下的image文件夹中读取出lena.png这张图片并将其展示在一个title为pic的框内

如图所示

其中imread函数作用是从本地目录读取一张图片,并生成一个numpy数组对象(据我观察就是一个三维数组,对应着RGB图片的三通道,这里笼统地说一下),我们创建了一个image变量接收这个三维数组,下面是print打印出来的结果,因为太长,我就截了两个

imshow函数的作用是展示我们的numpy格式的图片,输入两个参数,第一个参数为字符串,代表窗体的title,第二个参数为numpy格式的图片,为展示内容
waitKey函数的作用类似于暂停或者计时器,当参数为0时,关闭窗口程序函数会返回一个-1值,这个可以被用于设置循环的终止条件(之后会用到),当输入的是大于0的自然数时,这里就变成了计时器,当经过输入的参数ms时间后,窗体自动关闭,并输出-1
destoryAllWindows函数为结束标志,当结束时,我们调用这个函数销毁掉所有的窗口(因为可以设置程序关闭的触发条件,这样就会导致关闭时还可能会有窗口保存,这时候函数就会杀掉他们)

2.图片色彩模式转换

代码如下(示例):

image = cv.imread("images/lena.png")
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)cv.imshow("BGR", image)
cv.imshow("Gray", gray)
cv.imshow("HSV", hsv)
cv.waitKey(0)
cv.destroyAllWindows()

这里我又学习到一个新的函数cvtColor,这个函数是用来转换图像的色彩模式的,因为再好看的美女在计算机眼里都是01代码,所以彩色图片(RGB )和灰度图片(GRAY)在他们眼里差别不大,反而因为灰度图片只有一条色彩通道,导致数据量是彩色通道的1/3,会让计算机的计算量大大减少,因此计算机更喜欢灰度图像,毕竟谁不喜欢965呢。

后面是cv库自带的常量,也不用记,看就行,一种色彩模式2(to)另一种色彩模式,自己找就好了


总结

这里是最最最简单的操作,我是懒狗,我真的是懒狗,因为我学的时候记住代码逻辑写出来就行,但是一总结就要去测试,生怕上演一出大型社死现场(毕竟我是2*2都算错过的男人),还要稍稍调整设备去运行一下截图结果(截图工具Snipaste,微软商店有,直接傻瓜安装),我去跟npy看视频了,明天一定写!!!!
下次一定!!!!


没错,兄弟们,我又回来了,今天再稍微写一点,能写多少写多少,毕竟我相信经过我脑子再加工的知识不会跟我背的政治大题一样三天就忘吧。

3.图片数据格式解析

代码如下(示例):

image = cv.imread("images/cat.jpg")
blank = np.zeros_like(image)
# 截取原图片高度200:350,宽度200:350的区域
roi = image[200:350, 200:350, :]
# 将原图片高度200:350,宽度200:350的区域复制到空白图相同的区域
blank[200:350, 200:350, :] = image[200:350, 200:350, :]
# 使用np.copy()复制图片,如果直接等于相当于加了指针
cpimage = np.copy(image)
cv.imshow("pic", image)
cv.imshow("blank", blank)
cv.imshow("roi", roi)
cv.imshow("cpimage", cpimage)
cv.waitKey(0)
cv.destroyAllWindows()

这里第二行我们又接触到一个新的函数,numpy包里的zeros_like函数,这个的作用是床一张空白图像,尺寸(长宽)与引用的参数image的大小一致,我们可以查看图片对象的shape属性,shape属性会输出一个长度为3的一维数组,三项的含义分别为H(Height高度),W(Width宽度),C(Channel隧道数)。

# 截取原图片高度200:350,宽度200:350的区域
roi = image[200:350, 200:350, :]

根据前面的总结,我们已经知道,图片是一个三维数组(H,W,C),那么我们使用python自带的语法规则,就可以选择某几个通道上的特定区域,上面的代码就是选择了所有三个通道上,y取值(200,350)和x取值(200,350)范围上的图像,展示效果如下


我们可以看到一个小区域被成功截取了出来
我们在这一段代码中学到的最后一个函数就是numpy的copy函数,参数为一个numpy数组格式的对象,这个函数的意义是复制一个图像对象,并将其赋予一个新的图像对象,这两个图像相互独立,不会相互影响。

总结(二)

我是懒狗,我真的是懒狗


opencv学习日记相关推荐

  1. opencv学习日记——娜扎小姐姐与猫咪的图像融合,超美哈哈哈

    opencv学习日记--图像的比较和融合,超美哈哈哈 图在后边哦,不看代码也要看看图,很酷,opencv绝了!!! #include<iostream> #include<openc ...

  2. OpenCV学习日记(2)

    绪言 图像基本要素简介 1.灰度色彩空间 2.BGR色彩空间 3.HSV色彩空间 数学知识简介 图像处理中的数学 连续傅里叶变换 离散时间傅里叶变换 离散傅里叶变换 傅里叶逆变换 卷积 滤波器 简介 ...

  3. OpenCV学习日记1

    1. OpenCV安装 OpenCV是一个开源的跨平台的计算机视觉类库,实现了图像处理和计算机视觉方面的很多通用算法.OpenCV的应用包括:人机互动,物体识别,图像分割,人脸识别,动作识别,运动跟踪 ...

  4. opencv学习日记——CV_8UC1 含义

    CV_8UC1 含义 预定义: CV_<bit_depth>(S|U|F)C<number_of_channels> 1–bit_depth-比特数-代表8bite,16bit ...

  5. caffe学习日记--lesson5: VS下新建工程,探究Blob

    caffe学习日记--lesson5: VS下新建工程,探究Blob 在VS2013下新建工程,探究caffe的数据结构Blob,并使用.熟悉caffe 1.新建空白的控制台应用程序,添加main.c ...

  6. OpenCV 学习笔记03 boundingRect、minAreaRect、minEnclosingCircle、boxPoints、int0、circle、rectangle函数的用法...

    函数中的代码是部分代码,详细代码在最后 1 cv2.boundingRect 作用:矩形边框(boundingRect),用于计算图像一系列点的外部矩形边界. cv2.boundingRect(arr ...

  7. opencv学习笔记(二):基于肤色的人手检测

    opencv学习笔记(二):基于肤色的人手检测 原文:http://blog.csdn.net/wzmsltw/article/details/50849810 先写了人手的检测程序,下一步基于检测程 ...

  8. Python+OpenCV学习(17)---摄像机标定

    Python+OpenCV学习(17)---摄像机标定 原文:http://blog.csdn.net/firemicrocosm/article/details/48594897 利用python学 ...

  9. OpenCV学习之六: 使用方向梯度直方图估计图像旋转角度

    OpenCV学习之六: 使用方向梯度直方图估计图像旋转角度 原文:http://blog.csdn.net/zhjm07054115/article/details/26964275 下面的代码通过计 ...

  10. python做直方图-python OpenCV学习笔记实现二维直方图

    本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d ...

最新文章

  1. solr单机版的搭建
  2. 启动子级时出错_减速机安装与使用时需注意的八个要点,细节很重要!
  3. css3 animatehue属性
  4. W5500EVB UDP模式的測试与理解
  5. 今天做内存操作系统(xp装在内存中)
  6. 原码、反码、补码的运算 【2分钟掌握】
  7. 在服务器端渲染完毕的 Angular Component,在客户端还会重新渲染一次吗?
  8. 实例浅析javascript call by value与call by reference
  9. crontab java job_crontab 定时任务
  10. python密码传参有特殊字符如何解决_无法在python selenium scrip中使用带有特殊字符“$”的密码...
  11. mysql 多端口备份_mysql数据库迁移、多端口运行、innobackupex备份
  12. verilog学习 (二)
  13. 自动驾驶 5-2 使用 PID 进行纵向速度控制 Longitudinal Speed Control with PID
  14. 关于代码家(干货集中营)共享android端知识点综合整理
  15. python捕捉warning_Python warnings.warn方法代码示例
  16. STM32CubeMX系列|DS18B20温度传感器
  17. 基于CLIP实现以文精准搜图
  18. 淘宝女装店铺如何提升转化?
  19. 网络文件存储系统(三)fastdfs分布式文件系统实战
  20. Access数据库教程_如何进行C#连接Access数据库的细节操作?

热门文章

  1. uview ui与element ui的区别和用法
  2. 软件项目管理存在的问题及改进措施
  3. 巴菲特致股东的一封信:1991年
  4. mysql 模糊匹配比自己短潆字符_根据中文字符串查询拼音声母
  5. 易语言技术-内存读写监视窥探技术
  6. 关于nvidia-smi和nvidia -V即nvidia --verison的命令说明
  7. Ubuntu16 Nvidia驱动安装(.run文件安装)
  8. Win10系统隐藏文件资源管理器中的3D对象等七个文件夹
  9. 要重复多少次变成潜意识_从骨子里的改变-潜意识的力量!
  10. 计算机键盘有哪些作用,电脑上的键盘有哪些功能 你不知道的10大键盘功能介绍...