广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python计算机视觉OpenCV入门讲解
  • 286
分享到

python计算机视觉OpenCV入门讲解

2024-04-02 19:04:59 286人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录前言一、什么是计算机视觉二、图片处理基础操作图片处理:读入图像图片处理:显示图像图片处理:图像保存三、图像处理入门基础图像成像原理介绍图像分类四、灰度图像五、彩色图像(RGB)六

前言

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

一、什么是计算机视觉

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

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

二、图片处理基础操作

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

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

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

图片处理:读入图像

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

图片处理:显示图像

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

图片处理:图像保存

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

三、图像处理入门基础

图像成像原理介绍

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

图片是由像素点构成的:

生动一点表示就是这样:

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

图像分类

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

四、灰度图像

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

灰度图像一块像素点:

五、彩色图像(RGB)

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

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

六、像素处理操作

读取像素

相关函数:返回值=图像(位置参数) 我们先以灰度图像,返回灰度值:
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)
这样我们就返回了这三个数值。

修改像素

直接暴力修改。
对于灰度图像, 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的这个区间全部用白色替代。

使用Python中的numpy修改像素点

读取像素:

相关函数:返回值=图像.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)

修改像素:

图像名.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))

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

七、获取图像属性

形状

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

import cv2
img1=cv2.imread('灰度图像')
print(img1.shape)

像素数目

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

图像类型

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

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

八、图像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()

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

九、通道的拆分与合并

拆分

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()

合并

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合并就可以得到以下结果:

到此这篇关于python计算机视觉OpenCV入门讲解的文章就介绍到这了,更多相关python OpenCV 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python计算机视觉OpenCV入门讲解

本文链接: https://www.lsjlt.com/news/118896.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python计算机视觉OpenCV入门讲解
    目录前言一、什么是计算机视觉二、图片处理基础操作图片处理:读入图像图片处理:显示图像图片处理:图像保存三、图像处理入门基础图像成像原理介绍图像分类四、灰度图像五、彩色图像(RGB)六...
    99+
    2022-11-11
  • 计算机视觉-OpenCV入门讲解
    🎉作者简介:在读计算机研究生,目前研二。主要研究方向是人工智能和群智能算法方向。目前熟悉python网页爬虫、机器学习、计算机视觉(OpenCV)、群智能算法目前正在学习深度学习的...
    99+
    2023-08-31
    计算机视觉 opencv python
  • python计算机视觉OpenCV入门实例分析
    本文小编为大家详细介绍“python计算机视觉OpenCV入门实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“python计算机视觉OpenCV入门实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一...
    99+
    2023-07-02
  • python计算机视觉opencv卡号识别示例详解
    目录一、模板预处理1.将模板设置为二值图2.检测模板的轮廓3.对模板轮廓排序,并将数字和轮廓一一对应,以字典存储4.备注二、图片预处理1.初始化卷积核2.图片预处理第一部分3.图像预...
    99+
    2022-11-12
  • 【计算机视觉】YOLO 入门:训练 COCO128 数据集
    一、COCO128 数据集 我们以最近大热的YOLOv8为例,回顾一下之前的安装过程: %pip install ultralyticsimport ultralyticsultralytics.checks() 这里选择训练的数据集为:...
    99+
    2023-08-30
    计算机视觉 YOLO 人工智能 YOLOv8 COCO128
  • python计算机视觉opencv矩形轮廓顶点位置确定
    目录一、问题的引入二、问题的解决方法方法一:方法二三、一些实现代码一、问题的引入 opencv在图像处理方面有着非常强大的功能,当我们需要使用opencv进行一些图像的矫正工作时,我...
    99+
    2022-11-11
  • linux下如何安装Opencv 2.4.10计算机视觉库
    这篇文章主要介绍了linux下如何安装Opencv 2.4.10计算机视觉库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。OpenCV 是 Intel 开源的计算机视觉库。它...
    99+
    2023-06-27
  • AI与Python计算机视觉教程
    目录计算机视觉计算机视觉层次结构计算机视觉与图像处理应用机器人医学安全运输安装有用的包阅读,写作和显示图像OpenCV函数用于读取,显示,写入图像文件示例色彩空间转换边缘检测人脸检测...
    99+
    2022-11-11
  • Python计算机视觉编程进阶之OpenCV进行霍夫变换
    目录前言(1)读取图像信息(2)霍夫变换的目的及应用1. 霍夫变换2. 霍夫线变换(1)基本概念(2)代码实现3. 霍夫圆变换(1)基本概念(2)代码实现4. 将所有图像绘制到一张图...
    99+
    2022-11-12
  • python计算机视觉opencv图像金字塔轮廓及模板匹配
    目录1.图像金字塔①高斯金字塔②拉普拉斯金字塔2.图像轮廓①寻找轮廓②轮廓特征③轮廓绘制3.模板匹配①模板匹配②匹配框线绘制③多对象匹配4.直方图统计①直方图绘制②直方图统计③直方图...
    99+
    2022-11-12
  • CentOS 6.5怎样安装跨平台计算机视觉库OpenCV
    这篇文章给大家介绍CentOS 6.5怎样安装跨平台计算机视觉库OpenCV,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  下面以Opencv2.3.1版的安装为例,为大家做个详细介绍。  一:安装依赖包  依赖包用...
    99+
    2023-06-10
  • python计算机视觉编程——第一章(基
    第1章 基本的图像操作和处理 1.1 PIL:Python图像处理类库 1.1.1 转换图像格式——save()函数 1.1.2 创建缩略图 1.1.3 复制并粘贴图像区域 1.1.4 调整尺寸和旋转 1.2 Matpl...
    99+
    2023-01-31
    视觉 计算机 python
  • python计算机视觉OpenCV库实现实时摄像头人脸检测示例
    目录设备准备:实现过程调用模型库文件打开摄像头人脸检测设置退出机制程序运行全部代码OpenCV 是一个C++库,目前流行的计算机视觉编程库,用于实时处理计算机视觉方面的问题...
    99+
    2022-11-12
  • Python 计算机视觉编程进阶之OpenCV 图像锐化及边缘检测
    目录前言(1)图像锐化(2)图像边缘检测a. 图像边缘b. 边缘检测1. 一阶微分算算子、二阶微分算子2. 读取图像信息3. Sobel 算子4. Laplacian 算子5. Sc...
    99+
    2022-11-12
  • 云计算教程学习入门视频课件:Load Balance讲解
    负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务...
    99+
    2023-06-03
  • 云计算教程学习入门视频课件:云计算终端技术讲解
    IT 的概念即信息技术,其中“I”代表信息(或数据),“T”代表技术(或计算),技术是用来处理信息的,所以说 I 是目的,T 是手段,T 是为 I 服务的。与 T 关联的安全主要是“计算可用性”,如果由于 T 的原因,人们无法处理 I,那么...
    99+
    2023-06-03
  • 云计算教程学习入门视频课件:云计算基础服务组件讲解
    云计算服务,即 云服务 。 中国云计算服务网 的定义是:指可以拿来作为服务提供使用的云计算产品。包括云主机、云空间、云开发、云测试和综合类产品等。在本文中和大家讲解下云计算基础服务组件内容,基础服务组件包括 DNS、DHCP、用户管理、身份...
    99+
    2023-06-04
  • python计算机视觉实现全景图像拼接示例
    首先对图片进行预处理,是图片的分配率大小在合适的范围内,避免图片太大占满整个电脑屏幕。 from PIL import Image def produceImage(file_in,...
    99+
    2022-11-11
  • Python计算机视觉SIFT尺度不变的图像特征变换
    目录图像特征-SIFT尺度不变特征变换1.1图像尺度空间1.2多分辨率金字塔1.3高斯差分金字塔1.4DoG空间极值检测1.5关键点的精确定位1.6消除边界响应1.7特征点的主方向1...
    99+
    2022-11-11
  • Python 计算机视觉编程进阶之图像特效处理篇
    目录前言1. 毛玻璃特效2. 浮雕特效3. 素描特效4. 怀旧特效5. 流年特效6. 水波特效7. 卡通特效8. 将图像都汇总到一张图中9. 总体代码结束语前言 参考的一些文章以及论...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作