0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是计算机视觉,图片处理基础操作

新机器视觉 来源:新机器视觉 作者:吃猫的鱼python 2022-09-22 15:22 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、什么是计算机视觉

计算机视觉是一门研究如何使机器“看”的科学,更进一步的说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取‘信息’的人工智能系统。这里所指的信息指Shannon定义的,可以用来帮助做一个“决定”的信息。因为感知可以看作是从感官信号中提取信息,所以计算机视觉也可以看作是研究如何使人工系统从图像或多维数据中“感知”的科学。 视觉是各个应用领域,如制造业、检验、文档分析、医疗诊断,和军事等领域中各种智能/自主系统中不可分割的一部分。由于它的重要性,一些先进国家,例如美国把对计算机视觉的研究列为对经济和科学有广泛影响的科学和工程中的重大基本问题,即所谓的重大挑战(grand challenge)。 计算机视觉的挑战是要为计算机和机器人开发具有与人类水平相当的视觉能力。机器视觉需要图象信号,纹理和颜色建模,几何处理和推理,以及物体建模。一个有能力的视觉系统应该把所有这些处理都紧密地集成在一起。 e9f420ac-3a2b-11ed-9e49-dac502259ad0.png  我们目前如果是在校学生,对于计算机视觉和机器学习的相关知识的学习是非常有用的,无论是对于自己的工作前景还是相关论文的撰写都是非常有用的,而且目前对于计算机的相关知识已经设计到了各个专业领域,其中包括医学领域(计算机视觉分析CT成像)、电学领域(使用matlab及相关领域画图)、人脸识别和车牌识别等等。而且有想要做交叉学科的对于计算机可以和任意领域及进行无障碍交叉。 由于我这个理工男的语文功底并不好,语言组织能力不强,所以我们今天就啰嗦到这里,总结一下就是计算机视觉及机器学习等和计算机相关的东西特别重要!

二、图片处理基础操作

首先我们来看一段简单的计算机视觉相关代码:
import cv2img=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: est.jpg

三、图像处理入门基础

图像成像原理介绍

首先我们第一个要深深深深的刻在脑子里的概念就是: eaf91a84-3a2b-11ed-9e49-dac502259ad0.png——图片是由像素点构成的 生动一点表示就是这样: eb511f54-3a2b-11ed-9e49-dac502259ad0.png   这样就可以完美的展示出计算机图像的成像原理,就是用一个个有颜色的像素点拼接而成的。  

图像分类

图像一般分为三类:
一、二值图像
二值图像表示的意思就是每一个像素点只由0和1构成,0表示黑色,1表示白色,而且这里的黑色和白色是纯黑和纯白。所以我们看到的图像也就是这个样子。我们以官网丽娜为例子。 ec0ca968-3a2b-11ed-9e49-dac502259ad0.pngec603a1a-3a2b-11ed-9e49-dac502259ad0.png二、灰度图像
灰度图像就是一个8位的位图。什么意思呢?就是说00000001一直到11111111,这就是二进制表示。如果表示成我们常用的十进制就是0-255。其中0就表示纯黑色,255就表示纯白色,中间就是处于纯黑色到纯白色的相关颜色。我们还是以丽娜为例。 ec795270-3a2b-11ed-9e49-dac502259ad0.png   灰度图像一块像素点:  ece7e87a-3a2b-11ed-9e49-dac502259ad0.png三、彩色图像(RGB) 计算机中所有的颜色都可以由R(红色通道)、G(绿色通道)、B(蓝色通道)来组成,其中每一个通道都有0-255个像素颜色组成。比如说R=234,G=252,B=4就表示黄色。显示出来的也是黄色。所以说彩色图像由三个面构成,分别对应R,G,B。我们还是以丽娜为例子: ed188cd2-3a2b-11ed-9e49-dac502259ad0.pnged442220-3a2b-11ed-9e49-dac502259ad0.png   所以说我们就可以知道复杂程度排序的话就是:彩色图像-灰度图像-二值图像。所以我们在进行人脸项目或者是车牌识别项目中最最最常用的操作就是将彩色图像转化为灰度图像,然后将灰度图像转为最简单的二值图像。        

四、像素处理操作

读取像素

相关函数:返回值=图像(位置参数) 我们先以灰度图像,返回灰度值:

																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 cv2import numpy as np i=cv2.imread('path',cv2.IMREAD_UNCHANGED)print(i.item(100100))i.itemset((100100),255)print(i,item(100100))
																通过这段代码我们就可以看得出来像素的更改。 对于彩色图像也是一样。
																
																				

五、获取图像属性

形状

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

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

像素数目

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

图像类型

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

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

六、图像ROI

ROI(region of interest)表示感兴趣区域
  • 从被处理的图像中以方框、圆、椭圆或者不规则多边形等方式勾勒出需要处理的区域。

  • 可以通过各种算子(operator)和函数来求ROI,并进行下一步操作。



																import cv2import numpy as npa=cv2.imread('path')b=np.ones((101,101,3))b=a[220:400,250:350]a[0:101,0:101]=bcv2.imshow('o',a)cv2.waitKey()cv2.destroyAllWindows()ee022cde-3a2b-11ed-9e49-dac502259ad0.png
																 
																我们还可以将感兴趣的图像加入到别的图像当中。
																 
																				 

七、通道的拆分与合并

拆分

																import cv2img=cv2.imread('图像名')b = img[ : , : , 0 ]g = img[ : , : , 1 ]r = img[ : , : , 2 ]
																我们在OpenCV中有专门拆分通道的函数: cv2.split(img)

																import cv2import numpy as npa=cv2.imread("imagelenacolor.png")b,g,r=cv2.split(a)cv2.imshow("B",b)cv2.imshow("G",g)cv2.imshow("R",r)cv2.waitKey()cv2.destroyAllWindows()ef272bf0-3a2b-11ed-9e49-dac502259ad0.png
																 合并

																import cv2import numpy as npa=cv2.imread("imagelenacolor.png")b,g,r=cv2.split(a)m=cv2.merge([b,g,r])cv2.imshow("merge",m)cv2.waitKey()cv2.destroyAllWindows()
																我们将上方的拆分图像进行merge合并就可以得到以下结果:
																efc07116-3a2b-11ed-9e49-dac502259ad0.png
															 
											 

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器视觉
    +关注

    关注

    163

    文章

    4736

    浏览量

    125113
  • 计算机视觉
    +关注

    关注

    9

    文章

    1714

    浏览量

    47471
  • 图片处理
    +关注

    关注

    0

    文章

    17

    浏览量

    7306

原文标题:计算机视觉及其图像处理操作

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用代理式AI激活传统计算机视觉系统的三种方法

    当前的计算机视觉系统擅长于识别物理空间与流程中的事件,却难以诠释场景细节及其意义,也无法推理后续可能发生的情况。
    的头像 发表于 12-01 09:44 370次阅读

    STM32计算机视觉开发套件:B-CAMS-IMX摄像头模块技术解析

    STMicroelectronics用于 STM32开发板的B-CAMS-IMX摄像头模块提供强大的硬件集,可处理多种计算机视觉场景和用例。该模块具有高分辨率500万像素IMX335LQN
    的头像 发表于 10-20 09:46 780次阅读
    STM32<b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>开发套件:B-CAMS-IMX摄像头模块技术解析

    【作品合集】赛昉科技VisionFive 2单板计算机开发板测评

    、OpenSUSE、OpenKylin、OpenEuler、Deepin等,及在这些操作系统上运行的各类软件。 活动详情地址: 【RISC-V专题】VisionFive 2单板计算机免费试用 作品合集: 作者
    发表于 09-04 09:08

    易控智驾荣获计算机视觉顶会CVPR 2025认可

    近日,2025年国际计算机视觉与模式识别顶级会议(IEEE/CVF Conference on Computer Vision and Pattern Recognition,CVPR 2025)在美国田纳西州纳什维尔召开。
    的头像 发表于 07-29 16:54 1001次阅读

    工业计算机的重要性

    工业计算机对某些行业至关重要。我们将在下面详细解释这些行业中的工业计算机应用。1.制造与工业自动化工业级计算机非常适合制造工厂,特别是那些想要自动化装配过程的工厂。在这样的环境中,工业计算机
    的头像 发表于 07-28 16:07 409次阅读
    工业<b class='flag-5'>计算机</b>的重要性

    自动化计算机经过加固后有什么好处?

    让我们讨论一下部署坚固的自动化计算机的一些好处。1.温度范围宽自动化计算机经过工程设计,配备了支持宽温度范围的组件,使自动化计算解决方案能够在各种不同的极端环境中运行。自动化计算机能够
    的头像 发表于 07-21 16:44 436次阅读
    自动化<b class='flag-5'>计算机</b>经过加固后有什么好处?

    自动化计算机的功能与用途

    工业自动化是指利用自动化计算机来控制工业环境中的流程、机器人和机械,以制造产品或其部件。工业自动化的目的是提高生产率、增加灵活性,并提升制造过程的质量。工业自动化在汽车制造中体现得最为明显,其中许多
    的头像 发表于 07-15 16:32 543次阅读
    自动化<b class='flag-5'>计算机</b>的功能与用途

    工业计算机与商用计算机的区别有哪些

    工业计算机是一种专为工厂和工业环境设计的计算系统,具有高可靠性和稳定性,能够应对恶劣环境下的自动化、制造和机器人操作。其特点包括无风扇散热技术、无电缆连接和防尘防水设计,使其在各种工业自动化场景中
    的头像 发表于 07-10 16:36 532次阅读
    工业<b class='flag-5'>计算机</b>与商用<b class='flag-5'>计算机</b>的区别有哪些

    一文带你了解工业计算机尺寸

    工业计算机是现代自动化、人工智能(AI)和边缘计算的支柱。这些坚固耐用的系统旨在承受恶劣的环境,同时为关键应用提供可靠的性能。然而,由于有这么多可用的外形尺寸,为您的工业计算机选择合适的尺寸可能是
    的头像 发表于 04-24 13:35 804次阅读
    一文带你了解工业<b class='flag-5'>计算机</b>尺寸

    计算机网络入门指南

    计算机网络是指将地理位置不同且具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
    的头像 发表于 04-22 14:29 1870次阅读
    <b class='flag-5'>计算机</b>网络入门指南

    Arm KleidiCV与OpenCV集成助力移动端计算机视觉性能优化

    生成式及多模态人工智能 (AI) 工作负载的广泛增长,推动了对计算机视觉 (CV) 技术日益高涨的需求。此类技术能够解释并分析源自现实世界的视觉信息,并可应用于人脸识别、照片分类、滤镜处理
    的头像 发表于 02-24 10:15 894次阅读

    BU-67121W实验室航空电子接口计算机North Hills

    BU-67121W实验室航空电子接口计算机North HillsNorth Hills的航空电子接口计算机(AIC),即BU-67121W,是一个高效能、可扩展且便携的平台,专为通过以太网开发并测试
    发表于 02-11 09:26

    AR和VR中的计算机视觉

    ):计算机视觉引领混合现实体验增强现实(AR)和虚拟现实(VR)正在彻底改变我们与外部世界的互动方式。即便是在引人入胜的沉浸式
    的头像 发表于 02-08 14:29 2172次阅读
    AR和VR中的<b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>

    工业计算机的定义与重要性

    工业计算机是专门为工业环境设计和制造的计算设备,其主要功能在于监控、控制和优化生产流程。这类计算机系统通常具备强大的处理能力、较高的稳定性以及耐高温、抗震动和防尘等特性,能够在极端的工
    的头像 发表于 12-25 15:11 983次阅读
    工业<b class='flag-5'>计算机</b>的定义与重要性

    云端超级计算机使用教程

    云端超级计算机是一种基于云计算的高性能计算服务,它将大量计算资源和存储资源集中在一起,通过网络向用户提供按需的计算服务。下面,AI部落小编为
    的头像 发表于 12-17 10:19 991次阅读