图像识别学习笔记001 通道转换
Posted Xlei314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像识别学习笔记001 通道转换相关的知识,希望对你有一定的参考价值。
图像识别学习笔记001 通道转换
图片基本操作函数
首先,我们要处理的图片为猫咪如下图所示:
读取图片
import cv2
img = cv2.imread(“cat.jpg”)
print(img)
其输出为
[[[136 186 228]
[136 186 228]
[136 186 228]
...
[122 158 188]
[122 158 188]
[122 158 188]]
[[136 186 228]
[136 186 228]
[136 186 228]
...
[122 158 188]
[122 158 188]
[122 158 188]]
[[136 186 228]
[136 186 228]
[136 186 228]
...
[121 157 187]
[121 157 187]
[121 157 187]]
...
[[ 91 132 205]
[ 91 132 205]
[ 91 132 205]
...
[ 90 123 196]
[ 89 122 195]
[ 88 121 194]]
[[ 91 132 205]
[ 91 132 205]
[ 91 132 205]
...
[ 90 123 196]
[ 89 122 195]
[ 88 121 194]]
[[ 91 132 205]
[ 91 132 205]
[ 91 132 205]
...
[ 90 123 196]
[ 89 122 195]
[ 88 121 194]]]
imread函数
imread( )
功能就是载入一张图片.
imread
函数有两个参数,第一个参数是图片路径,第二个参数表示读取图片的形式,有三种:
cv2.IMREAD_COLOR
:加载彩色图片,这个是默认参数,可以直接写1.cv2.IMREAD_GRAYSCALE
:以灰度模式加载图片,可以直接写0.cv2.IMREAD_UNCHANGED
:包括alpha,可以直接写-1.
该函数经常配合imshow( )
函数一起使用,imshow()
函数功能就是把你刚才载入的图片显示出来.
imread
在不加第二个参数的情况下默认将图片转换成了一个三维数组,最里面的一维代表的是一个像素的三个通道的灰度值,第二个维度代表的是第一行所有像素的灰度值,第三个维度,也就是最外面的一个维度代表的是这一张图片.
img = cv2.imread("../cat.jpg")
cv2.imshow("cat", img)
cv2.imread()
的系数是按照BGR顺序排列的
其中的变量R表示的是仅有原图像红通道的cat.jpg
import cv2
img = cv2.imread("cat.jpg")
red = img[:,:,2].copy()
imwrite函数
还有一个常用的函数为imwrite()
.
使用函数cv2.imwrite(file,img,num)
保存一个图像.
第一个参数是要保存的文件名,第二个参数是要保存的图像.
可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别.默认为3.
cv2.imwrite("out.jpg", img)
通道转换(BGR转RGB)代码:
import cv2
# function: BGR -> RGB
def BGR2RGB(img):
b = img[:, :, 0].copy()
g = img[:, :, 1].copy()
r = img[:, :, 2].copy()
# RGB > BGR
img[:, :, 0] = r
img[:, :, 1] = g
img[:, :, 2] = b
return img
# Read image
img = cv2.imread("../cat.jpg")
# BGR -> RGB
img = BGR2RGB(img)
# Save result
cv2.imwrite("out.jpg", img)
cv2.imshow("result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
处理结果
进行处理之后的图片如下图所示:
学习过程中遇到的问题
1.图像处理中三维数组代表什么?
答:我们在做图像处理的时候会遇到三维数组,也可以称为三维张量(tensor)。我们可以将三维数组想象成为一个立方体,第一维度理解为立方体的长,第二维度理解为宽,彩色图片是3通道的,所以第三维“图片通道”想象成深度。用立方体中直观展示:
2.通道
答:通道 : 把数字图像按照颜色成分划分 其中
单通道图像 :每个像素点只用一个数值来表示,只可以表示灰度,0表示黑
三通道 : RGB模式,用红绿蓝来表示图像,可以表示彩色,全0表示黑色
四通道 在RGB的基础上加入了,alpha(透明度),alpha=0,表示全透明
3.深度
深度(位数)即比特数
位深 :每个像素点所占的总位数
位深 = 像素的通道数*像素的位数
以上是关于图像识别学习笔记001 通道转换的主要内容,如果未能解决你的问题,请参考以下文章
CS231n 学习笔记 Image CLassification
opencv学习笔记第六篇:分离颜色通道多通道图像混合和图像对比度亮度值的调整