使用python将图片改为灰度图或黑白图

2023-05-16

        使用python将图片改为灰度图或黑白图有三种方式,分别是是使用cv2库和PIL库来实现,详细过程如下所示。

1. 使用cv2库将图片改为灰度图

        在使用cv2进行读取原彩色图片时,在里面添加一个参数cv2.IMREAD_GRAYSCALE表示将图片作为灰色图数据进行加载。

示例代码:

import cv2

image = cv2.imread('./images/sunflower.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imwrite('./images/gray_sunflower.jpg', image)

运行效果:

对处理后的图片再次进一步的探究。

示例代码:

import cv2

# image = cv2.imread('./images/sunflower.jpg', cv2.IMREAD_GRAYSCALE)

# cv2.imwrite('./images/gray_sunflower.jpg', image)

#  进一步探索图片格式
image = cv2.imread('./images/sunflower.jpg')
print(image.shape)
imageGray = cv2.imread('./images/gray_sunflower.jpg')
print(imageGray.shape)
imageGray2 = cv2.imread('./images/sunflower.jpg', cv2.IMREAD_GRAYSCALE)
print(imageGray2.shape)

运行效果:

         从运行结果可以看出,在用cv2读取数据时,即使读取的原图是灰度图片,但是返回的结果仍然是BGR格式的图像,BGR格式是默认的格式。

2. 利用PIL库将图片改为黑白图

        原理是转为“1”的模式,为二值图像。即:非黑即白。它每个像素用8个bit表示,0表示黑,255表示白(除了这两个值外再没有别的值)

示例代码:

from PIL import Image

# open colour image
image_raw = Image.open("./images/sunflower.jpg")
# convert image to black and white
image_black_white = image_raw.convert('1')
image_black_white.save('./images/black_white_sunflower.jpg')
image_black_white.show()

 运行结果:

3. 利用PIL库将图片改为灰度图

        原理是转为“L”的模式。0表示黑,255表示白,其它数字表示不同的灰度。在PIL中,从模式"RGB"转为"L"模式是按照下面公式转换
L = R * 299/1000 + G * 587/1000+ B * 114/1000 

示例代码:

from PIL import Image
import matplotlib.pyplot as plt

# open colour image
image_raw = Image.open("./images/sunflower.jpg")
image_gray = image_raw.convert('L')
# image_gray.show()
plt.figure('sunflower')  # 图名
plt.imshow(image_gray, cmap='gray')  # cmap即colormap,颜色映射
# plt.axis('off')  # 关闭网格线
plt.show()

运行效果:(下图1关闭网格线,下图2带有网格线)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用python将图片改为灰度图或黑白图 的相关文章

  • 15.异常处理

    目录 1 为什么需要异常处理 xff1f 2 在c 43 43 中异常处理的方法 xff1f xff1f 3 异常的抛出4 异常的类型捕捉5 系统预定义的异常类型6 异常的再抛出 1 为什么需要异常处理 xff1f 用 new 运算符动态分
  • 我的创作纪念日

    一周年纪念
  • SD卡无法格式化怎么办的解决方法

    SD卡无法格式化怎么办的解决方法 http www upantool com jiaocheng neicunka 5399 html 每次SD卡受损都要格卡的朋友 xff0c 一大堆游戏 相片 视频 xff0c 还有导航地图要重新上传 x
  • cmake --Cannot specify link libraries for target" XX" which is not built by this project.

    cmake Cannot specify link libraries for target 34 XX 34 which is not built by this project 原CMakeLists txt内容 xff1a find
  • cmake & CMakeLists.txt

    文章目录 前言先从体验开始1 一个最简单的例子 xff1a 2 例子升级 xff0c 将hello c生成为一个库 xff1a 3 例子升级 xff0c 将源代码和库分开放 xff1a 4 让可执行文件在 bin 目录 xff0c 库文件在
  • 配置Jetson XAVIER NX串口通信,不使用union传递浮点数

    下载minicom span class token function sudo span span class token function apt get span span class token function install s
  • C语言实现大写字母与小写字母之间的互转

    思路 咋一看 xff0c 好像没什么思路 其实我们只需要知道ASCII值就行 xff0c 65和97这两个数字作为程序员必须牢记于心 xff0c 因为这两个数字分别是ASCII表中字母 a 和 A 的十进制值 xff01 xff01 xff
  • 实时显示电脑当前网速和CPU利用率等信息 && 设置软件开机自启动

    相信不少朋友在平时看实时网速时 xff0c 用的都是360那个悬浮窗 xff0c 或者其它杀毒软件提供的 而今天就介绍一款绿 xff08 逼 xff09 色 xff08 格 xff09 更高的用于显示当前网速 CPU及内存利用率的桌面悬浮窗
  • Win10只能安装GPT磁盘的解决办法

    最近帮同事重装系统时 xff0c 遇到了之前没遇到过的问题 无论是微软官方的U盘制作工具还是MSDN下载的镜像加上rufus都无法解决的问题 xff0c 那就是在选择安装磁盘时会提示无法安装 xff0c 点击错误详细会出现下面的提示框 xf
  • C语言中常用运算符

    C语言中常用到的运算符主要有算数运算符 逻辑运算符 位运算发 关系运算符和其它的 一 算数运算符 主要是我们在数学运算中使用的一些加减乘除运算符 xff0c 但是有几个运算符与我们数学中的不 太一样 xff08 以下会说明 xff09 xf
  • 如何下载Ubuntu 20.04并运行在VM虚拟机上

    第一步 下载Ubuntu镜像文件 下载Ubuntu的镜像 xff0c 我们首先想到的就是去官网下载 xff0c 但是由于服务器在国外 xff0c 下载速度可能只有几KB S 甚至压根就下载不了 其实我们有更好的选择 那就是选择我们国内的一些
  • Unbutntu18.04 caffe在make编译时出现对‘cv::imread(cv::String const&, int)’未定义的引用 解决方案

    在CAFFE编译时会出现如下错误 xff1a CXX LD o build release tools caffe bin build release lib libcaffe so xff1a 对 cv imread cv String
  • yolov5返回坐标

    yolov5返回坐标 yolov5目前已更新到v6版 xff0c 上面up主的文章是以前的版本 xff0c 代码对应不上 xff0c 所以特地在此更新一下 xff1a 参考链接 xff1a https blog csdn net weixi
  • ISD9160学习笔记02_搭建NuMicro开发环境

    http blog csdn net iotisan article details 53166357 所谓学习笔记 xff0c 不能免俗地总会讲到开发环境 嵌入式这一行就是这样 xff0c 每做一个新方案 xff0c 就得学习它的CPU
  • RS232不能通信的问题

    RS232不能通信 xff0c 根据PCB图检查了硬件电路是否导通 xff0c 短路状态使用串口工具发送消息收到消息可以收发 xff0c 编程方面大概率无误 由原理图可见 xff0c 地 TXD和RXD设计错误 xff0c 没有反着接 用杜
  • NRF24L01+实现一对一数据双向传输

    NRF24L01 43 实现一对一数据双向传输 目录说明带负载数据ACK的双向通信配置NRF24L01 43 的收发程序收发双方数据的处理测试代码和结果 目录 说明 最近在diy四轴飞行器的时候 xff0c 需要实现四轴和遥控器之间的双向通
  • RT-Thread开启串口.中断和DMA接收(手把手教学)

    1 串口介绍 串口是指数据一位一位地顺序传送 xff0c 其特点是通讯线路简单 xff0c 只要一对传输线就可以实现双向通信 xff08 可以直接利用电话线作为传输线 xff09 xff0c 从而大大降低了成本 xff0c 特别适用于远距离
  • stm32使用MPU6050读取温度值验证I2C

    通过MPU6050测温来进行I2C的验证学习 关于MPU6050寄存器相关可以参考https blog csdn net he yuan article details 76559569 I2C时序很多 xff0c 我是直接以原子I2C的程
  • String的长度限制

    String的长度 是有限制的 String存储 String其实是使用的一个char类型的数组来存储字符串中的字符的 看看字符串返回长度的方法 返回值类型是int类型 其长度最大限制为2 31 1 xff0c 那么说明了数组的长度是0 2
  • 通过isapi协议抓拍图片

    PC端通过isapi协议抓拍摄像头图片 说明 xff1a 1 isapi协议类似于http协议 2 通过isapi协议抓拍图片要经过这几个步骤 2 1 先创建socket xff0c 再连接服务器 xff08 也就是摄像机 xff09 co

随机推荐

  • yolo|使输出的结果txt含目标的四个坐标信息及类别置信度

    最近参加的智能船舶挑战赛对结果的格式要求 xff1a 包含目标边界框从左上角开始的顺时针标注点坐标 xff0c 目标类别以及目标类别分数 xff0c 并用空格分开 如下图所示 xff1a 故对yolov5的detect py进行修改 xff
  • 平台开发——安装海康摄像头(2402系列球机)并实现对其RTSP的推流

    本次购入了一台海康2402系列球机 xff08 DS 2DC2402IW D3 W xff09 xff0c 对设备进行了激活 设置及简要操作 xff0c 在服务器上对其进行了推流 购买摄像头 本次购买了海康威视DS 2DC2402IW D3
  • TIPS:Ubuntu 系统python版本切换

    1 查看 xff08 1 xff09 查看系统中存在的python版本 xff1a ls usr bin python xff08 2 xff09 查看系统默认版本 xff1a python version 2 修改 xff08 1 xff
  • 报错:CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘.

    新安装anaconda xff0c 输入 conda activate 报错 终端输入 xff1a source activate source deactivate conda activate
  • Windows下C++调用Http接口

    1 WininetHttp h span class token macro property span class token directive keyword pragma span once span span class toke
  • ubuntu系统 PyImport_ImportModule 返回 NULL

    原因 xff1a 1 python文件出错 2 python文件路径出错 在PyImport ImportModule命令前添加语句 PyRun SimpleString 34 import sys 34 PyRun SimpleStrin
  • ModuleNotFoundError:No module named

    经典报错 xff1a ModuleNotFoundError No module named XXX 但通过conda list 可以发现相关第三方包 在程序中添加路径 import sys sys path append 39 三方包路径
  • Iterator迭代器

    1 迭代器的概述 迭代器 是一种通用的遍历集合 取出集合中元素的方式 迭代器由来 集合有很多种 每种集合的数据结构是不同的 数组 链表 哈希表 集合取出元素的方式也不同 我们不可能为每种集合都定义一种取出元素的方式 浪费 所以我们就可以使用
  • strcat函数将两个字符串拼接在一起

    span class token macro property span class token directive keyword include span span class token string 34 pch h 34 span
  • 4、C语言结构体使用---链表

    结构体 1 掌握结构体的概念和用法 2 掌握结构体数组和结构体指针 3 掌握包含结构体的结构体 4 掌握结构体搭建链表方法 5 掌握结构体及链表在产品应用场景 结构体的概念 比如说学生的信息 xff0c 包含了学生名称 学号 性别 年龄等信
  • 爬虫之爬取百度贴吧

    爬虫之爬取百度贴吧 直接示例代码 xff1a import requests from lxml import html etree 61 html etree from lxml import etree class Tieba obje
  • 正则表达式匹配开头和结尾(^、$、[^指定字符])

    1 匹配开头和结尾 代码功能 匹配字符串开头 匹配字符串结尾 示例1 xff1a 需求 xff1a 匹配以数字开头的数据 import re 匹配以数字开头的数据 match obj 61 re match 34 d 34 34 1hell
  • re.sub()用法详解

    源代码 参数及其意义 xff1a def sub pattern repl string count 61 0 flags 61 0 34 34 34 Return the string obtained by replacing the
  • BERT模型的详细介绍

    1 BERT 的基本原理是什么 xff1f BERT 来自 Google 的论文Pre training of Deep Bidirectional Transformers for Language Understanding xff0c
  • 自然语言处理(NLP)之使用TF-IDF模型计算文本相似度

    自然语言处理 NLP 之使用TF IDF模型计算文本相似度 所用数据集 xff1a ChnSentiCorp htl all csv 语料库即存放稀疏向量的列表 要注意的是 xff0c 搜索文本text与被检索的文档共用一个特征词词典 NL
  • C++中关于类重复定义的分析和解决方法

    在C 43 43 中将类以及类中的成员函数的声明放在 h的头文件中 xff0c 而将类中成员函数的定义 xff08 即实现代码 xff09 放在 cpp的源文件中 xff0c 这样我们的程序设计起来更加的模块化 xff0c 但是 xff0c
  • re.search()用法详解

    re search xff1a 匹配整个字符串 xff0c 并返回第一个成功的匹配 如果匹配失败 xff0c 则返回None pattern 匹配的规则 string 要匹配的内容 flags 标志位 这个是可选的 就是可以不写 可以写 比
  • re.findall()用法详解

    re findall xff1a 函数返回包含所有匹配项的列表 返回string中所有与pattern相匹配的全部字串 xff0c 返回形式为数组 示例代码1 xff1a 打印所有的匹配项 import re s 61 34 Long li
  • Linux系统中创建虚拟环境详解

    1 方法一 1 1 安装虚拟环境的命令 xff1a sudo pip install virtualenv sudo pip install virtualenvwrapper 1 2 安装完虚拟环境后 xff0c 如果提示找不到mkvir
  • 使用python将图片改为灰度图或黑白图

    使用python将图片改为灰度图或黑白图有三种方式 xff0c 分别是是使用cv2库和PIL库来实现 xff0c 详细过程如下所示 1 使用cv2库将图片改为灰度图 在使用cv2进行读取原彩色图片时 xff0c 在里面添加一个参数cv2 I