【opencv】计算机视觉基础知识

这篇具有很好参考价值的文章主要介绍了【opencv】计算机视觉基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

1、什么是计算机视觉

2、图片处理基础操作

2.1 图片处理:读入图像

2.2 图片处理:显示图像

2.3 图片处理:图像保存

3、图像处理入门基础

3.1 图像成像原理介绍

3.2 图像分类

3.2.1 二值图像

3.2.2灰度图像

3.2.3彩色图像(RGB)

4、像素处理操作

4.1 读取像素

4.2 修改像素

4.3 使用python中的numpy修改像素点

4.3.1 读取像素

4.3.2 修改像素

5、获取图像属性

5.1 形状

5.2 像素数目

5.3 图像类型

6、图像ROI

7、通道的拆分与合并

7.2 合并


前言

本文将非常细致的讲解相关与计算机视觉OpenCV的相关知识即操作,非常的简单易懂。本文主要讲解相关与计算机视觉的相关入门内容,关于图像处理的相关简单操作,包括读入图像、显示图像及图像相关理论知识。

推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

1、什么是计算机视觉

  • 计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取‘信息’的人工智能系统。这里所指的信息指Shannon定义的,可以用来帮助做一个“决定”的信息。因为感知可以看作是从感官信号中提取信息,所以计算机视觉也可以看作是研究如何使人工系统从图像或多维数据中“感知”的科学。
  • 视觉是各个应用领域,如制造业、检验、文档分析、医疗诊断,和军事等领域中各种智能/自主系统中不可分割的一部分。由于它的重要性,一些先进国家,例如美国把对计算机视觉的研究列为对经济和科学有广泛影响的科学和工程中的重大基本问题,即所谓的重大挑战(grand challenge)。计算机视觉的挑战是要为计算机和机器人开发具有与人类水平相当的视觉能力。机器视觉需要图象信号,纹理和颜色建模,几何处理和推理,以及物体建模。一个有能力的视觉系统应该把所有这些处理都紧密地集成在一起。

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

我们目前如果是在校学生,对于计算机视觉机器学习的相关知识的学习是非常有用的,无论是对于自己的工作前景还是相关论文的撰写都是非常有用的,而且目前对于计算机的相关知识已经设计到了各个专业领域,其中包括医学领域(计算机视觉分析CT成像)、电学领域(使用matlab及相关领域画图)、人脸识别和车牌识别等等。而且有想要做交叉学科的对于计算机可以和任意领域及进行无障碍交叉。
由于我这个理工男的语文功底并不好,语言组织能力不强,所以我们今天就啰嗦到这里,总结一下就是计算机视觉及机器学习等和计算机相关的东西特别重要!

2、图片处理基础操作

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

首先我们来看一段简单的计算机视觉相关代码:

import cv2
img=cv2.imread('path')#path指图片相关路径
cv2.imshow('Demo',img)
cv2.nameWindow('Demo')
cv2.waitKey(0)
cv2.destroyAllWindows()

这段代码就可以在计算机中显示出img的相关图像。接下来我们讲解一下每一步的相关操作。

2.1 图片处理:读入图像

相关函数:image=cv2.imread(文件名相关路径[显示控制参数])
文件名:完整的路径。
其中参数包括:
cv.IMREAD_UNCHANGED :表示和原图像一致
cv.IMREAD_GRAYSCALE : 表示将原图像转化为灰色图像。
cv.IMREAD_COLOR:表示将原图像转化为彩色图像。
例如:
cv2.imread(‘d:\image.jpg’,cv.IMREAD_UNCHANGED)

2.2 图片处理:显示图像

相关函数:None=cv2.imshow(窗口名,图像名)
例如:cv2.imshow(“demo”,image)
但是在OpenCV中我们图像显示还是要加上相关约束:
retval=cv2.waitKey([delay])
如果没有这个限制,那么显示的图像就会一闪而过,就会发生错误。
其中delay参数包括:
dealy=0,无限等待图像显示,直到关闭。也是waitKey的默认数值。
delay<0,等待键盘点击结束图像显示,也就是说当我们敲击键盘的时候,图像结束显示。
delay>0,等待delay毫秒后结束图像显示。
最后我们还需要显示
cv2.destroyAllWindows()
把图像从内存中彻底删除。

2.3 图片处理:图像保存

相关函数:retval=cv2.imwrite(文件地址,文件名)
例如:
cv2.imwrite(‘D:\test.jpg’,img)
将img保存到了路径D:\test.jpg

3、图像处理入门基础


3.1 图像成像原理介绍

首先我们第一个要深深深深的刻在脑子里的概念就是:

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

生动一点表示就是这样:

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

这样就可以完美的展示出计算机图像的成像原理,就是用一个个有颜色的像素点拼接而成的。

3.2 图像分类
3.2.1 二值图像

二值图像表示的意思就是每一个像素点只由0和1构成,0表示黑色,1表示白色,而且这里的黑色和白色是纯黑和纯白。所以我们看到的图像也就是这个样子。我们以官网丽娜为例子。
 

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

3.2.2灰度图像

灰度图像就是一个8位的位图。什么意思呢?就是说00000001一直到11111111,这就是二进制表示。如果表示成我们常用的十进制就是0-255。其中0就表示纯黑色,255就表示纯白色,中间就是处于纯黑色到纯白色的相关颜色。我们还是以丽娜为例。

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

3.2.3彩色图像(RGB)

计算机中所有的颜色都可以由R(红色通道)、G(绿色通道)、B(蓝色通道)来组成,其中每一个通道都有0-255个像素颜色组成。比如说R=234,G=252,B=4就表示黄色。显示出来的也是黄色。所以说彩色图像由三个面构成,分别对应R,G,B。我们还是以丽娜为例子:

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

所以说我们就可以知道复杂程度排序的话就是:彩色图像-灰度图像-二值图像。所以我们在进行人脸项目或者是车牌识别项目中最最最常用的操作就是将彩色图像转化为灰度图像,然后将灰度图像转为最简单的二值图像。

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

4、像素处理操作

4.1 读取像素

相关函数:返回值=图像(位置参数) 我们先以灰度图像,返回灰度值:
p=img[88,142]
print§
这里我们就可以返回图片坐标[88,142]处的灰度值。
然后我们以彩色图像为例子:
我们知道彩色图像由BGR三个通道的值构成。那么我们需要返回三个数值:
blue=img[78,125,0]
green=img[78,125,1]
red=img[78,125,2]
print(blue,green,red)
这样我们就返回了这三个数值。

4.2 修改像素

直接暴力修改。
对于灰度图像, img[88,99]=255
对于彩色图像,
img[88,99,0]=255
img][88,99,1]=255
img[88,99,2]=255这里也可以写成
img[88,99]=[255,255,255]等同于上方。
改动多个像素点
例如还是以彩色图像为例子:
i[100:150,100:150]=[255,255,255]
意思也就是将图像横坐标100到150和纵坐标100到150的这个区间全部用白色替代。

4.3 使用python中的numpy修改像素点
4.3.1 读取像素

相关函数:返回值=图像.item(位置参数)
我们以灰度图像为例:
o=img,item(88,142)
print(o)
对于彩色图像我们还是:
blue=img.item(88,142,0)
green=img.item(88,142,1)
red=img.item(88,142,2)
然后print(blue,green,red)

4.3.2 修改像素

图像名.itemset(位置,新的数值)
我们以灰度图像为例子:
img.itemset((88,99),255)
对于BGR图像:
img.itemset((88,99,0),255)
img.itemset((88,99,1),255)
img.itemset((88,99,2),255)

import cv2
import numpy as np 
i=cv2.imread('path',cv2.IMREAD_UNCHANGED)
print(i.item(100,100))
i.itemset((100,100),255)
print(i,item(100,100))

通过这段代码我们就可以看得出来像素的更改。
对于彩色图像也是一样。

5、获取图像属性

5.1 形状

shape可以获取图像的形状,返回值包含行数、列数通道数的元组。
灰度图像返回行数列数
彩色图像返回行数、列数、通道数。

import cv2
img1=cv2.imread('灰度图像')
print(img1.shape)
5.2 像素数目

size可以获取图像的像素数目。
灰度图像:行数列数
彩色图像:行数
列数*通道数

5.3 图像类型

dtype返回的是图像的数据类型

import cv2
img=cv2.imread('图像名称')
print(img.dtype)

6、图像ROI

ROI(region of interest)表示感兴趣区域

  • 从被处理的图像中以方框、圆、椭圆或者不规则多边形等方式勾勒出需要处理的区域。
  • 可以通过各种算子(operator)和函数来求ROI,并进行下一步操作。
import cv2
import numpy as np
a=cv2.imread('path')
b=np.ones((101,101,3))
b=a[220:400,250:350]
a[0:101,0:101]=b
cv2.imshow('o',a)
cv2.waitKey()
cv2.destroyAllWindows()

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

我们还可以将感兴趣的图像加入到别的图像当中。

7、通道的拆分与合并

7.1 拆分

import cv2
img=cv2.imread('图像名')
b = img[ : , : , 0 ]
g = img[ : , : , 1 ]
r = img[ : , : , 2 ]

我们在OpenCV中有专门拆分通道的函数:
cv2.split(img)

import cv2
import numpy as np
a=cv2.imread("image\lenacolor.png")
b,g,r=cv2.split(a)
cv2.imshow("B",b)
cv2.imshow("G",g)
cv2.imshow("R",r)
cv2.waitKey()
cv2.destroyAllWindows()

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

7.2 合并
import cv2
import numpy as np
a=cv2.imread("image\lenacolor.png")
b,g,r=cv2.split(a)
m=cv2.merge([b,g,r])
cv2.imshow("merge",m)
cv2.waitKey()
cv2.destroyAllWindows()

我们将上方的拆分图像进行merge合并就可以得到以下结果:

【opencv】计算机视觉基础知识,杂谈,opencv,计算机视觉

如果觉得博主的文章还不错或者您用得到的话,可以免费的关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持!文章来源地址https://www.toymoban.com/news/detail-759257.html

到了这里,关于【opencv】计算机视觉基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机视觉基础知识(十二)--神经网络与深度学习

    一种机器学习的算法 一般有输入层--隐藏层--输出层 隐藏层数量多于两个的称为深度神经网络; 输入的是特征向量; 特征向量代表的是变化的方向; 或者说是最能代表这个事物的特征方向; 权重是特征值,有正有负,加强或抑制; 权重的绝对值大小,代表输入信号对神经元的影响大小

    2024年02月21日
    浏览(59)
  • 计算机基础知识

    参考链接:https://blog.csdn.net/ChineseSoftware/article/details/123176978 https://www.cnblogs.com/8023-CHD/p/11067141.html https://blog.csdn.net/qq_42033567/article/details/108088514 http与https的区别 HTTP 的URL以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP的默认端口是80,而HTTPS的默认端口是443 在OSI网络模型中,HTT

    2024年02月10日
    浏览(63)
  • 计算机基础——TCP基础知识

    16位源端口号 16位目的端口号 32位序号 32位确认号 4位头部长度 6位保留 URG ACK PSH RST SYN FIN 16位窗口大小 16位校验和 16位紧急指针 选项(长度可变) 填充 16位端口号 :源端口号,主机该报文段是来自哪里;目标端口号,要传给哪个上层协议或应用程序 32位序号 :一次TCP通信(

    2024年01月20日
    浏览(71)
  • 计算机基础知识(基础入门小白专属)

    ♥️ 作者:小刘在这里 ♥️ 每天分享云计算网络运维课堂笔记,疫情之下,你我素未谋面,但你一定要平平安安,一  起努力,共赴美好人生! ♥️ 夕阳下,是最美的,绽放,愿所有的美好,再疫情结束后如约而至。 目录 计算机的发展史 计算机的硬件组成 计算机的分类

    2024年02月08日
    浏览(57)
  • 计算机基础知识题精选

    1.网络钓鱼欺骗是社会工程学的一种方式,下列关于社会工程学的说法中错误的是( ) A.社会工程学利用了人性的弱点;B.社会工程学需要结合常识;C.社会工程学的目的是获取秘密信息;D.谎言越多,社会工程学的欺骗效果越好 正确答案是:D 2.根据恶意代码特征对恶意代码

    2023年04月12日
    浏览(58)
  • 计算机基础知识(基础入门小白专属)二

      ♥️ 作者:小刘在这里 ♥️ 每天分享云计算网络运维课堂笔记,疫情之下,你我素未谋面,但你一定要平平安安,一  起努力,共赴美好人生! ♥️ 夕阳下,是最美的,绽放,愿所有的美好,再疫情结束后如约而至。 目录 vmware workstation  的用法 扩展部分

    2024年02月02日
    浏览(49)
  • 计算机基础知识点汇总

    1、指令是指示计算机执行某种操作的命令,包括操作码和地址码两部分。 2、目前常见的指令系统有复杂指令系统(CISC)和精简指令系统(RISC)。 3、计算机的工作过程:取指令、分析指令、执行指令。 4、未配置任何软件的计算机叫裸机,注意不是指安装过操作系统的计算

    2024年02月10日
    浏览(52)
  • 计算机系统(软考版)----计算机系统基础知识、基本单位与进制(1)

    计算机系统是由 硬件和软件 组成的,它们协同工作来运行程序。计算机的基本硬件系统由 运算器、控制器、存储器、输入设备和输出设备5大部件组成。运算器、控制器等部件被集成在一起统称为中央处理单元(Central Processing Unit,CPU) 。(标黄这个需要记忆) CPU是硬件系统的

    2024年01月22日
    浏览(64)
  • 计算机网络安全基础知识复习

    计算机安全: 对于一个自动化的信息系统,采取措施确保信息系统资源(包括硬件、软件、固件、信息数据和通信)的完整性,可用性和保密性。 目标/服务: 认证;访问控制;数据保密性;数据完整性,不可否认性,可用性. 安全攻击 :任何危及信息系统安全的行为。 安全机

    2024年02月09日
    浏览(48)
  • 深度学习·理论篇(2023版)·第002篇深度学习和计算机视觉中的基础数学知识01:线性变换的定义+基于角度的线性变换案例(坐标变换)+点积和投影+矩阵乘法的几何意义+图形化精讲

    💕 恭喜本博客浏览量达到两百万,CSDN内容合伙人,CSDN人工智能领域实力新星~ 🧡 本文章为2021版本迭代更新版本,在结合有效知识的基础上对文章进行合理的增加,使得整个文章时刻顺应时代需要 🧡 本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理

    2023年04月08日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包