python OpenCV 图像通道数判断
作者:浅若清风cyf? 发布时间:2023-10-15 18:21:22
标签:python,OpenCV,图像,通道数,判断
前言
OpenCV是图像处理常用的库,作为初学者,往往从图片的读取、保存、查询图片的信息开始,下面将分享Python下OpenCV的一些基本使用方法,掌握这些基本方法后,能够更好地与matplotlib、numpy等结合使用,完成相应的图像操作。
教程
1、读取/保存图片
1)imread和imwrite方法
注:此方法遇到中文路径会报错!
import cv2
# 参数1:文件路径
# 参数2:读取方式
# 常用几种模式:
# 灰度图:cv2.IMREAD_GRAYSCALE
#BGR三通道彩 * :cv2.IMREAD_COLOR
#原始通道(自动判断:单通道/三通道/四通道等):cv2.IMREAD_UNCHANGED
img = cv2.imread('图像文件路径(全英文)', cv2.IMREAD_COLOR)
# 参数1:文件路径
# 参数2:待保存的图像(BGR格式的uint8 ndarray类型)
# 参数3【可选】:压缩模式以及质量等
# 常用几种模式:
# 灰度图:cv2.IMREAD_GRAYSCALE
#BGR三通道彩 * :cv2.IMREAD_COLOR
#原始通道(自动判断:单通道/三通道/四通道等):cv2.IMREAD_UNCHANGED
img_saved = cv2.imwrite('图像输出路径(含图像名)', img)
2)imdecode和imencode方法
import cv2
import numpy as np
# cv2.imdecode():从指定的内存缓存中读取数据,并把数据转换成图像格式
src_img_path = './image.png'
img=cv2.imdecode(np.fromfile(src_img_path, dtype=np.uint8),cv2.IMREAD_UNCHANGED)
# cv2.imencode():将图片格式转换成流数据,写入内存缓存中,可以再调用.tofile()写入到磁盘中
out_img_path = './image.jpg'
extension = '.jpg'
cv2.imencode(extension,img)[1].tofile(out_img_path)
2、编码转换
1)BGR转RGB
matplotlib.pyplot的imshow()方法广泛用于显示图像,然而opencv默认加载的图像时BGR格式,直接显示会出现颜色异常,需要先进行转换
img_rgb = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
2)BGR转GRAY
三通道的BRG彩 * 像转换成单通道的灰度图
img_gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
3、快速判断图像是否单通道灰度图
if img.ndim == 2:
print('图像是单通道灰度图')
else:
print('图像包含多个通道')
4、获取图像通道数
def get_n_channel(img):
if img.ndim == 2:
print('通道数:1')
return 1
else:
print('图像包含多个通道')
return img.shape[2]
来源:https://juejin.cn/post/7082938938104479751
0
投稿
猜你喜欢
- Windows•安装lxml最好的安装方式是通过wheel文件来安装,http://www.lfd.uci.edu/~gohlke/pyth
- Python SSH远程连接与文件传输from paramiko import (SSHClient, SFTPClient, AutoAd
- 导读:由于banner一般用于专题类网站,在门户网站的二级页面,用户进来之前,在首页已经对主题有一定的了解和认识,所以banner的作用是在
- →问题提出:我用dw做了一个下拉菜单,但是碰到form的列表项就跑到下面去了,请帮忙解决,先谢谢各位了!请看问题图示如下:→解决问题:由于层
- 一、CAN报文简介CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称
- variables_to_restore函数,是TensorFlow为滑动平均值提供。之前,也介绍过通过使用滑动平均值可以让神经网络模型更加
- 方法1:使用dataframe.loc[]函数通过这个方法,我们可以用一个条件或一个布尔数组来访问一组行或列。如果我们可以访问它,我们也可以
- 零基础学习Python的入手方向:1、首先你确定学习Python用来做什么方向,爬虫还是……;2、确定方向后,就按照你喜欢的方式找学习资料;
- 本文实例讲述了Python正则表达式实现截取成对括号的方法。分享给大家供大家参考,具体如下:strs = '1(2(3(4(5(67
- 拼接字符串使用“+”运算符可完成对多个字符串的拼接,“+”运算符可以连接多个字符串并产生一个字符串对象。字符串不允许直接与其他类型数据拼接。
- 最近开发一套接口,写个Python脚本,使用requests.session模拟一下登录.因为每次需要获取用户信息,登录需要带着sessio
- 大家还是直接看代码吧~netG = Generator()print('# generator parameters:',
- 下面直接记录下配置主从库的操作:(本文用的是mysql5.0以上)1.在主库建立要同步的数据库,建立主库的帐号和修改主库配置首先连接上数据库
- #!/usr/bin/env python#coding=utf-8import osfrom pyinotify import Watch
- 非原创:英文版混乱的标记语言XHTML2/HTML5源文地址:漫画英文版源文地址感谢我的同事Kevin Jaw的翻译。他的博客地址是:Kev
- 下面示例代码是防止用网页刷新过快,如果多个页面使用,最好将<%...%>代码存为一个asp文件,在需要的页面最前面include
- python发送icmp echo requesy请求import socketimport structdef checksum(sour
- 模块化分页1.查询语句块<% 取得当前文件名 temp = Split(request.ServerV
- 本文实例讲述了Python使用matplotlib绘图无法显示中文问题的解决方法。分享给大家供大家参考,具体如下:在python中,默认情况
- 有些朋友看到这个标题可能会有疑问,难道在视图中使用*符号还有何要注意的地方吗?对于这个问题,我们先不必回答,先看一下例子吧。 我这里,使用的