Opencv 图像处理:图像基础操作与灰度转化

这篇具有很好参考价值的文章主要介绍了Opencv 图像处理:图像基础操作与灰度转化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文已收录于Opencv系列专栏: 深入浅出OpenCV ,专栏旨在详解Python版本的Opencv,为计算机视觉的开发与研究打下坚实基础。免费订阅,持续更新。

图像属性

1.图像格式

图像压缩比: 通过编码器压缩后的图象数字大小和原图象数字大小的压缩比。

  • BMP 格式
    Windows系统下的标准位图格式,未经过压缩,一般图像文件会比较大。在很多软件中被广泛应用。
  • JPEG 格式
    也是应用最广泛的图片格式之一,它采用一种特殊的有损压缩算法,达到较大的压缩比可达到 2:1 甚至 40:1,互联网上最广泛使用的格式
  • GIF 格式
    不仅可以是一张静止的图片,也可以是动画,并且支持透明背景图像,适用于多种操作系统, 体型很小,网上很多小动画都是 GIF 格式。但是其色域不太广只支持 256 种颜色。
  • PNG 格式
    与JPG 格式类似,压缩比高于 GIF (因此png损失较小,质量更好),支持图像透明支持 Alpha 通道调节图像的透明度。
  • TIFF 格式
    它的特点是图像格式复杂、存贮信息多。在 Mac 中广泛使用, 非常有利于原稿的复制。很多地方将 TIFF 格式用于印刷。

2.图像尺寸

图像尺寸
  • 图像尺寸的长度与宽度是以像素为单位的。
像素
  • 像素是数码影像最基本的单位,每个像素就是一个小点,而不同颜色的点聚集起来就变成一幅照片。
  • 灰度像素点数值范围在 0 到 255 之间, 0 表示黑、255 表示白,其它值表示处于黑白之间;
  • 黑白照片只需一个通道表示即可。
  • 彩色图用红、绿、蓝三通道的二维矩阵来表示。每个数值也是在 0 到 255 之间, 0 表示相应的基色,而 255 则代表相应的基色在该像素中取得最大值。
读入图像cv2.imread()
cv2.imread()

参数说明:

第一参数为待读路径;

第二个参数为读取方式,常见读取方式有三种

Opencv 图像处理:图像基础操作与灰度转化

#导入opencv的python版本依赖库cv2
import cv2

#使用opencv中imread函数读取图片,
#0代表灰度图形式打开,1代表彩色形式打开
img = cv2.imread('split.jpg',1)
print(img.shape)
#print(img) 打印图像的数组
显示图像cv2.imshow()
cv2.imshow()

参数说明:

参数1 :窗口的名字

参数2 :图像数据名/变量名

#导入opencv依赖库
import cv2

#读取图像,读取方式为彩色读取
img = cv2.imread('split.jpg',1)
#
cv2.imshow('photo',img)
k = cv2.waitKey(0)
if k == 27:   # 输入ESC键退出
    cv2.destroyAllWindows()
elif k == ord('s'): # 输入S键保存图片并退出
    cv2.imwrite('split_.jpg',img)
cv2.destroyAllWindows()
也可matplotlib导入图像
#加载第三方包
import cv2
from matplotlib import pyplot as plt

#使用Matplotlib导入图像
img = cv2.imread('test_image.png',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')

#隐藏X、Y轴上的刻度
#plt.xticks([]), plt.yticks([])
plt.show()

Opencv 图像处理:图像基础操作与灰度转化

键盘绑定cv2.waitKey(0)
#cv2.waitKey()是一个键盘绑定函数
#若为数字则是单位毫秒,若为0代表等待键盘输入。
cv2.waitKey(0)
删除窗口cv2.destrovAllWindows()
# cv2.destroyAllWindows() 删除窗口
# 默认值为所有窗口,参数一为待删除窗口名。
cv2.destrovAllWindows()
保存图像cv2.imwrite()
cv2.imwrite('split_.jpg',img)

参数说明:

参数1 :图像名(包括格式)

参数2 :待写入的图像数据变量名。

3.图像分辨率

  • 分辨率:
    单位长度中所表达或截取的像素数目。每英寸图像内的像素点数,单位是像素每英寸 (PPI) 。图像分辨率越高,像素的点密度越高,图像越清晰。
  • 通道数:
    图像的位深度,是指描述图像中每个pixel 数值所占的二进制位数。 位深度 越大则图像能表示的颜色数就越多,色彩越丰富逼真。
    • 8 位:单通道图像,也就是灰度图,灰度值范围2**8=256
    • 24 位:三通道 3*8=24
    • 32 位:三通道加透明度 Alpha 通道
灰度转化
  • 目的

    将三通道图像(彩色图)转化为单通道图像(灰度图)。

  • 公式

    3---->1: GRAY = B * 0.114 + G * 0.587 + R * 0.299

    1---->3: R = G = B = GRAY; A = 0

  • 函数:

    cv2.cvtColor(img,flag)

  • 参数说明

    参数1 :待转化图像

    参数2 :flag 就是转换模式

    • cv2.COLOR_BGR2GRAY :彩色转灰度
    • cv2.COLOR_GRAY2BGR:单通道转三通道
#导入opencv
import cv2 
#读入原始图像,使用cv2.IMREAD_UNCHANGED
img = cv2.imread("girl.jpg",cv2.IMREAD_UNCHANGED)
#查看打印图像的shape
shape = img.shape
print(shape)
#判断通道数是否为3通道或4通道
if shape[2] == 3 or shape[2] == 4 :
    #将彩色图转化为单通道图
    img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    cv2.imshow("gray_image",img_gray)
cv2.imshow("image", img)
cv2.waitKey(1000) # 等待1000毫秒也就是1秒
cv2.destroyAllWindows()
RGB与 BGR 转化

Opencv读取图像是以BGR读取的,但是许多包是RGB读取,因此有些情况下需要转化。

转化的方法

opencv自带的方法转

cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

numpy转

img[:,:,::-1] #列左右翻转

示例:

import cv2 
import matplotlib.pyplot as plt 
img = cv2.imread("test2.png", cv2.IMREAD_COLOR)
cv2.imshow("Opencv_win", img)
# 用opencv自带的方法转
img_cv_method = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 用numpy转,img[:,:,::-1]列左右翻转
img_numpy_method = img[:,:,::-1] # 本来是BGR 现在逆序,变成RGB
# 用matplot画图
plt.subplot(1,3,1)# 划分一个1行3列的空间
plt.imshow(img_cv_method)
plt.subplot(1,3,2)
plt.imshow(img_numpy_method)
plt.subplot(1,3,3)
plt.imshow(img)
plt.savefig("./plt.png")
plt.show()
#保存图片
cv2.imwrite("opencv.png", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Opencv 图像处理:图像基础操作与灰度转化文章来源地址https://www.toymoban.com/news/detail-439859.html

到了这里,关于Opencv 图像处理:图像基础操作与灰度转化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • OpenCV常用功能——灰度处理和图像二值化处理

    1.1 cvtColor函数 函数原型: 功能 :转换图像颜色空间。 参数 : src: 输入图像。 code: 颜色空间转换代码。可以取常量cv2.COLOR_BGR2GRAY或cv2.COLOR_RGB2GRAY。 dst: 输出图像。 dstCn: 输出图像的通道数,如果设置为0,则跟随转换代码自动设置。 内置函数示例代码: 灰度处理的原理是将

    2024年02月08日
    浏览(62)
  • 基于opencv的c++图像处理(灰度变换)

    基于opencv的c++接口,实现常用的图像灰度变换方法,包括了线性变换、图像反转、对数变换和伽马变换。 函数 cv::normalize 标准化缩放和移动输入数组元素 当 normType=NORM_MINMAX 时(仅适用于密集数组)。可选掩码指定要规范化的子数组。这意味着在子数组上计算范数或 min-n-ma

    2024年02月04日
    浏览(71)
  • C++OpenCV(2):图像处理基础概念与操作

    🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 🔆 OpenCV项目地址及源代码:点击这里 通过 imread 我们可以读取一个图片 其形式如下: 而我们需要传递一个InputArray类型的参数,实际上就是 cv::Mat 如果创建cv::Mat呢? 可以通过 它的很多的构造函数 先来了解一下图片的 颜色通

    2024年02月16日
    浏览(39)
  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 视频图像处理基础操作 之 视频捕获/存储/提取/合成/合并

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 视频图像处理基础操作 之 视频捕获/存储/提取/合成/合并 一、简单介绍 二、视频处理流程和原理 三、视频的捕获和存储 四、提取视频中的某些帧 五、将图片合成为视频 六、多个视频合并 Python是一种跨平台的计算机程序设计

    2024年04月10日
    浏览(123)
  • C#使用OpenCv(OpenCVSharp)图像处理实例:亮度、对比度、灰度

    本文实例演示C#语言中如何使用OpenCv(OpenCVSharp)对图像进行亮度、对比度、灰度处理。 目录 亮度和对比度原理 灰度 实例 图像亮度通俗理解便是图像的明暗程度,数字图像 f(x,y) = i(x,y) r(x, y) ,如果灰度值在[0,255]之间,则 f 值越接近0亮度越低,f 值越接近255亮度越

    2024年02月13日
    浏览(76)
  • Python 基于 OpenCV 视觉图像处理实战 之 图像相关的基本概念,以及图像的基础操作 一

    目录 Python 基于 OpenCV 视觉图像处理实战 之 图像相关的基本概念,以及图像的基础操作 一 一、简单介绍 二、图像相关的一些基本概念 1、像素 2、图像的构成 3、图像的格式 4、图像的位深和通道 三、OpenCV 的一些基本图像处理函数介绍 1、读取一幅画图像 2、显示图像 3、输出

    2024年04月11日
    浏览(144)
  • PIL、OpenCV、numpy处理图像格式的相互转化方式

    OpenCV读取图像后返回的是一个代表图像的NumPy数组,采用的格式是 H×W×C,通道顺序为BGR 使用matplotlib绘图时,可以读取tesnor和numpy数据类型,图片通道顺序为RGB,且尺寸为(H,W,C)。 使用np.array(image)和np.asarray(image)可以将 PIL Image 图像转换成 numpy 数组。 使用Image.fromarray(np.uint8(i

    2024年02月07日
    浏览(44)
  • 嵌入式教学实验箱_数字信号处理实验箱_操作教程:5-16 灰度图像线性变换(LCD显示)

    学习灰度图像线性变换的原理,掌握图像的读取方法,并实现在LCD上显示线性变换前后的图像。 一般成像系统只具有一定的亮度范围,亮度的最大值与最小值之比称为对比度。由于形成图像的系统亮度有限,常出现对比度不足的弊病,使人眼观看图像时视觉效果很差,通过灰

    2024年02月03日
    浏览(68)
  • opencv-图像处理基础-二值图像

    1.二值图像 二值图像是指仅仅包含黑色和白色两种颜色的图像。 在计算机中,通过一个栅格状排列的数据集(矩阵)来表示和处理图像。例如,图 2-1 是 一个字母 A 的图像,计算机在处理该图像时,会首先将其划分为一个个的小方块,每一个小方 块就是一个独立的处理单位

    2024年02月15日
    浏览(56)
  • OpenCV基本图像处理操作(一)——图像基本操作与形态学操作

    图像显示 转hsv图像 颜色表示为三个组成部分:色调(Hue)、饱和度(Saturation)和亮度(Value)。常用于图像处理中,因为它允许调整颜色的感知特性,如色彩和亮度,这些在RGB颜色模型中不那么直观。 HSV模型特别适用于任务如图像分割和对象追踪,因为它可以更好地处理光

    2024年04月22日
    浏览(89)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包