当前位置: 首页 > 编程笔记 >

python opencv将图片转为灰度图的方法示例

竺展
2023-03-14
本文向大家介绍python opencv将图片转为灰度图的方法示例,包括了python opencv将图片转为灰度图的方法示例的使用技巧和注意事项,需要的朋友参考一下

使用opencv将图片转为灰度图主要有两种方法,第一种是将彩色图转为灰度图,第二种是在使用OpenCV读取图片的时候直接读取为灰度图。

将彩色图转为灰度图

import cv2
import numpy as np

if __name__ == "__main__":
  img_path = "timg.jpg"
  img = cv2.imread(img_path)
  #获取图片的宽和高
  width,height = img.shape[:2][::-1]
  #将图片缩小便于显示观看
  img_resize = cv2.resize(img,
  (int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
  cv2.imshow("img",img_resize)
  print("img_reisze shape:{}".format(np.shape(img_resize)))

  #将图片转为灰度图
  img_gray = cv2.cvtColor(img_resize,cv2.COLOR_RGB2GRAY)
  cv2.imshow("img_gray",img_gray)
  print("img_gray shape:{}".format(np.shape(img_gray)))
  cv2.waitKey()

img_reisze shape:(337, 600, 3)
img_gray shape:(337, 600)

使用opencv读取图片的时候,默认使用的是BGR来读取图片的,可以看到原始读取的图片是3通道的,经过转换之后变成了单通道。

直接将图片采用灰度图的方式进行读取

import cv2
import numpy as np

if __name__ == "__main__":
  img_path = "timg.jpg"
  img = cv2.imread(img_path)
  #获取图片的宽和高
  width,height = img.shape[:2][::-1]
  #将图片缩小便于显示观看
  img_resize = cv2.resize(img,
  (int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
  cv2.imshow("img",img_resize)
  print("img_reisze shape:{}".format(np.shape(img_resize)))

  #读取灰度图
  img_gray = cv2.imread(img_path,cv2.IMREAD_GRAYSCALE)
  #将图片缩小便于显示观看
  img_gray = cv2.resize(img_gray,
  (int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
  cv2.imshow("img_gray",img_gray)
  print("img_gray shape:{}".format(np.shape(img_gray)))
  cv2.waitKey()

img_reisze shape:(337, 600, 3)
img_gray shape:(337, 600)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 问题内容: 我正在使用aparapi编写Buddhabrot分形生成器。我将其中的OpenCL部分工作了,得到了一个表示每个像素的单维数组。我将最终图像的尺寸作为最终整数,并编写了代码以获取该数组中任意点的索引。我想将其另存为图像,并且尝试将BufferedImage与TYPE_USHORT_GRAY一起使用。这是我到目前为止的内容: 问题是,我不知道将RGB设置为什么。我需要做什么? 问题答案:

  • 上一节课讲解了纹理贴图的知识点,本节课通过一个把彩色图处理为灰度图的案例进一步认识可编程片元着色器和逐片元的概念。 纹理贴图可以经过渲染管线处理后映射到三维空间中顶点坐标定义的位置,在这个过程中,执行方法texture2D()提取的像素值直接赋值给片元,存入帧缓存的颜色缓冲区中, 显示系统扫描颜色缓冲区中的像素值显示在屏幕上。渲染过线的片元着色器是可编程的,可以执行着色器语言编写的程序,也就是说可

  • 问题内容: 我想将具有形状的灰度图像转换为具有形状的3通道图像。使用可以完成工作,但是必须有一个整洁的方法。这是程序中的一段代码,有人可以提示。请指教。 问题答案: 您可以使用它来更简洁地完成此操作:

  • 问题内容: 我正在尝试使用 matplotlib.pyplot.imshow() 显示灰度图像。我的问题是灰度图像显示为颜色图。我需要灰度,因为我想在图像上绘制颜色。 我读入图像并使用 PIL的Image.open()。convert(“ L”)* 转换为灰度 * 然后,我将图像转换为矩阵,以便可以轻松地使用 但是,当我这样做 它使用颜色图显示图像(即不是灰度)。 我在这里做错了什么? 问题答案:

  • 主要内容:将彩色图像转换为灰度在前面的章节中,我们讨论了如何读取不同类型的输入图像(二进制,灰度,BGR等)。 在本章中,我们将学习如何将一种图像转换为另一种图像。 包中名为的类提供了将图像从一种颜色转换为另一种颜色的方法。 将彩色图像转换为灰度 使用方法将彩色图像转换为灰度。 以下是此方法的语法。 该方法接受以下参数 - src - 表示来源的矩阵。 dst - 表示目的地的矩阵。 code - 表示转换类型的整数代码,例如

  • 问题内容: 你好,我正在将图像从彩色转换为纯黑白,结果是深色图像。我没有原因。以下是我的代码,它受SO上其他代码的启发。任何指导都会有所帮助。 我没有弄错我在做什么。使用任何其他开放源代码库的任何其他想法都可以。 工作::::: 问题答案: 您实际上并没有将彩色图像转换为黑白图像。您正在创建与空白图片相同大小的新空白图片。您实际上需要做一些处理旧图像的操作。