首页 > 其他分享 >OpenCV入门01:图像处理简介/图像的基础操作

OpenCV入门01:图像处理简介/图像的基础操作

时间:2024-01-04 12:03:58浏览次数:31  
标签:01 颜色 OpenCV 图像处理 灰度 模块 图像 cv 255


项目开源,地址:https://gitee.com/zccbbg/opencv_study


文章目录

  • 图像处理简介
  • 灰度图像
  • 二值图像
  • 彩色图
  • opencv 介绍
  • 图像基础操作
  • 图像读取与显示
  • 绘制几何图形
  • 图像的属性
  • 其他操作
  • 算数操作
  • 加法
  • 混合
  • 图像色彩空间转换


图像处理简介

灰度图像

● 灰度图像是由灰度级组成的图像,每个像素的灰度级表示图像中的亮度。通常,灰度级在0到255之间,其中0表示黑色,255表示白色。
● 在灰度图像中,每个像素都有一个单一的数值,表示该像素的亮度。因此,灰度图像是单通道图像。

二值图像

不是黑就是白
二值图像是一种特殊的灰度图像,其中每个像素只能取两个值,通常是0或1。这两个值通常分别代表黑色和白色,或者表示某种特定的目标和背景。

彩色图

彩色图像是一种图像表示方式,它包含了多个颜色通道的信息,相对于灰度图像而言,彩色图像能够更真实地表达物体的颜色。彩色图像通常用于涉及色彩信息的图像处理、计算机视觉和图形学等领域。

常见的彩色图像有三种基本颜色通道,即红色(R,代表Red)、绿色(G,代表Green)、蓝色(B,代表Blue),这种颜色模型被称为RGB颜色模型。在RGB颜色模型中,每个像素由这三个颜色通道的数值组成,形成一个三维的颜色空间。通过不同的组合,可以生成各种颜色。

除了RGB颜色模型,还有其他颜色模型,如CMYK(青、品红、黄、黑)用于印刷领域,HSV(色调、饱和度、明度)用于颜色的直观表示等。

彩色图像相对于灰度图像具有更丰富的信息,可以提供更多关于场景的细节,这对于许多应用是至关重要的。在计算机视觉任务中,彩色信息通常用于物体识别、图像分割等,而在图形学中,彩色图像则用于渲染真实感图像。

opencv 介绍

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,提供了许多用于图像处理和计算机视觉的功能和工具。以下是一些常见的OpenCV模块:

  1. Core 模块(core):提供基本的数据结构、算法和功能,如图像的读取、写入、操作等。
  2. Imgproc 模块(imgproc):包含图像处理函数,如图像平滑、边缘检测、图像变换等。
  3. HighGUI 模块(highgui):用于创建简单的用户界面,包括图像显示窗口、滑动条等。
  4. Video 模块(video):包含视频处理相关的功能,如视频捕捉、视频编解码等。
  5. Calib3d 模块(calib3d):用于相机标定、三维重建和相机姿态估计等计算机视觉任务。
  6. Features2d 模块(features2d):提供了特征检测和描述子提取的函数,如SIFT、SURF、ORB等。
  7. Objdetect 模块(objdetect):包含用于目标检测的功能,如Haar级联分类器。
  8. Videoio 模块(videoio):用于读写视频文件和摄像头数据的功能。
  9. ML 模块(ml):提供机器学习相关的功能,包括支持向量机(SVM)和k最近邻(k-NN)等。
  10. Flann 模块(flann):用于快速最近邻搜索的库。
  11. Dnn 模块(dnn):包含深度学习模型的功能,可以用于加载和运行深度学习模型。
  12. Photo 模块(photo):提供了一些图像编辑和修复的工具,如色彩校正和图像修复。
  13. Stitching 模块(stitching):用于图像拼接和全景图像创建的功能。
  14. Shape 模块(shape):包含形状分析和匹配的函数。

图像基础操作

图像读取与显示

import cv2 as cv
# 以灰度图的形式读取图像
img = cv.imread('../images/test.jpg',0)
cv.imshow('img',img)
cv.waitKey(0)
cv.destroyAllWindows()

读取方式的标志
cv.IMREAD*COLOR:以彩色模式加载图像,任何图像的透明度都将被忽略。这是默认参数。

cv.IMREAD*GRAYSCALE:以灰度模式加载图像

cv.IMREAD_UNCHANGED:包括alpha通道的加载图像模式。

可以使用1、0或者-1来替代上面三个标志

绘制几何图形

cv.line(): 绘制直线

cv.circle(): 绘制圆形

cv.rectangle(): 绘制矩形

cv.putText(): 在图像上添加文字

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
# 1 创建一个空白的图像
img = np.zeros((512,512,3), np.uint8)
# 2 绘制图形
cv.line(img,(0,0),(511,511),(255,0,0),5)
cv.rectangle(img,(384,0),(510,128),(0,255,0),3)
cv.circle(img,(447,63), 63, (0,0,255), -1)
font = cv.FONT_HERSHEY_SIMPLEX
cv.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv.LINE_AA)
# 3 图像展示
plt.imshow(img[:,:,::-1])
plt.title('匹配结果'), plt.xticks([]), plt.yticks([])
plt.show()

图像的属性

OpenCV入门01:图像处理简介/图像的基础操作_图像处理

其他操作

直接使用行列索引获取图像中的像素并进行修改

拆分通道:cv.split()

通道合并:cv.merge()

色彩空间的改变: cv.cvtColor(input_image,flag)

算数操作

加法

你可以使用OpenCV的cv.add()函数把两幅图像相加,或者可以简单地通过numpy操作添加两个图像,如res = img1 + img2。两个图像应该具有相同的大小和类型,或者第二个图像可以是标量值。

注意:OpenCV加法和Numpy加法之间存在差异。OpenCV的加法是饱和操作,而Numpy添加是模运算。

注意:这里都要求两幅图像是相同大小的。

参考以下代码:

>>> x = np.uint8([250])
>>> y = np.uint8([10])
>>> print( cv.add(x,y) ) # 250+10 = 260 => 255
[[255]]
>>> print( x+y )          # 250+10 = 260 % 256 = 4
[4]

混合

将两幅图像按照不同的比例进行混合
注意:这里都要求两幅图像是相同大小的。

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

# 1 读取图像
img1 = cv.imread("view.jpg")
img2 = cv.imread("rain.jpg")

# 2 图像混合
img3 = cv.addWeighted(img1,0.7,img2,0.3,0)

# 3 图像显示
plt.figure(figsize=(8,8))
plt.imshow(img3[:,:,::-1])
plt.show()

图像色彩空间转换

cvtColor()函数是opencv里的颜色空间转换函数,可以实现RGB颜色向HSV,HSI等颜色空间的转换,也可以转换成灰度图像。

HSV颜色模型
HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)。
这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。
色调H:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;
饱和度S:取值范围为0.0~1.0;
亮度V:取值范围为0.0(黑色)~1.0(白色)。

def color_space_demo():
    image = cv.imread("../images/test.jpg")
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY) #将加载的彩色图像转换为灰度图像
    hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV) #将加载的彩色图像转换为HSV颜色空间

    cv.imshow("gray",gray)
    cv.imshow("hsv",hsv)
    cv.waitKey(0)
    cv.destroyAllWindows()

if __name__ == '__main__':
    color_space_demo()


标签:01,颜色,OpenCV,图像处理,灰度,模块,图像,cv,255
From: https://blog.51cto.com/u_16065421/9098409

相关文章

  • Cisco Catalyst 9000 系列,IOS-XE Release Bengaluru-17.06.01 ED
    CiscoCatalyst9000无线和交换产品系列接入和核心交换机与Wi-Fi6解决方案的产品组合,打造永不间断、始终安全的网络连接。阅读概览特性和优势Catalyst9000平台可帮助您超越用户日益增长的期望。打造永不间断、始终安全且易于管理的互联环境。连接统一的有线和无线基础设施,结......
  • Cisco Catalyst 9800-CL Wireless Controller for Cloud, Release Bengaluru-17.06.01
    面向云的思科Catalyst9800-CL无线控制器,专为基于意图的网络全新打造。版本:C9800-CL-universalk9.17.06.01(31-Jul-2021)C9800-CL-universalk9.17.05.01(01-Apr-2021)C9800-CL-universalk9.17.04.01(29-Nov-2020)C9800-CL-universalk9.17.03.03(05-Mar-2021)C9800-CL-univers......
  • Cisco Catalyst 8000 Series Edge Platforms, IOS XE Release Dublin-17.11.01a ED
    CiscoCatalyst8000SeriesEdgePlatforms,IOSXEReleaseDublin-17.11.01aEDCiscoCatalyst8000边缘平台系列作者主页:sysin.orgCiscoCatalyst8000:随心所欲访问位于云、数据中心和边缘的混合型应用和多云应用。特性和优势Catalyst8000边缘平台是一款基于意图的网络(IBN......
  • 2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time, 分别表示
    2024-01-03:用go语言,给你两个长度为n下标从0开始的整数数组cost和time,分别表示给n堵不同的墙刷油漆需要的开销和时间。你有两名油漆匠,一位需要付费的油漆匠,刷第i堵墙需要花费time[i]单位的时间,开销为cost[i]单位的钱。一位免费的油漆匠,刷任意一堵墙的时间为1......
  • Windows Server 2016 中文版、英文版下载 (updated Jul 2023)
    WindowsServer2016中文版、英文版下载(updatedJul2023)WindowsServer2016Version1607,2023年7月更新作者主页:sysin.org本站将不定期发布官方原版风格月度更新ISO。MicrosoftWindowsServer2016充分利用WindowsServerWindowsServer是连接本地环境与Azure的操......
  • macOS Sonoma 14 beta 4 (23A5301g) ISO、IPSW、PKG 下载
    macOSSonoma14beta4(23A5301g)ISO、IPSW、PKG下载本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟机中启动安装。另外也支持在Windows和Linux中创建可引导介质。作者主页:sysin.orgmacOSSonoma推出全新功能,全面......
  • dell R730服务器报MEM0001错误
    dellR730服务器报MEM0001错误发布时间:2022-03-23点击数:1223dellR730服务器报MEM0001Multi-bitmemoryerroronDimm-B2.ReseatMemory错误解决方案:这个提示是报位于B2槽位的内存条发生多位错误,可以断电后把内存用橡皮清洁金手指再插上,再试,如果还是报这个,是内存挂了。可以先......
  • 从零开始学 Oracle 数据库 (001)
    学习目的从零开始学习Oracle数据库,达到OCP实操水平。学习计划目标用100天学习Oracle数据库,为记录学习过程,计划连更100天学习笔记。学习纲要这块先空着,佛系学习法,学到哪算哪,回头再总结。学习环境数据库版本OracleDatabase19cRelease(19.3.0.0.0-64-bit,1......
  • 人工智能_机器学习081_聚类评价指标_轮廓系数_公式理解---人工智能工作笔记0121
    然后我们再来看,那么对于数据来说,我们分成几类比较合适呢,怎么衡量呢?我们之前做分类的时候,用的是准确率对吧,然后做回归问题的时候,用均方误差.而我们在Kmeans衡量分成几类比较好用的函数是,轮廓系数对吧,可以看到上面是轮廓系数的公式可以看到,他有两个点 可以看到公式中的a......
  • 图像处理-周期噪声
    周期噪声对于具有周期性的噪声被称为周期噪声,其中周期噪声在频率域会出现关于中心对称的性质,如下图所示带阻滤波器为了消除周期性噪声,由此设计了几种常见的滤波器,其中表示带阻滤波器的带宽理想带阻滤波器巴特沃斯带阻滤波器高斯带阻滤波器带阻滤波器所对应的带通滤波器则为......