咱们平时使用PS或者其它图像处理的软件打开一个要处理的图像,当咱们将图像放大的足够大的时候咱们会发现不少个灰度程度不一样的小方格,其中每一个方格就至关于一个像素,水平方向的方格数表明这个图像的像素宽度(一般在图像的属性信息中能够查看到图像以像素为单位的宽度),一样垂直方向上的方格的个数表明图像的像素高度。计算机会将每一个方格化为一个数值- “位深度”,是将一个方格化为[0,255]之间的一个uchar类型的数字,用256个数来表示灰度的深浅(0表明黑色,256表明白色),值越小越灰,反之越大越接近白色,就越亮。总之对于计算机数字图像的处理就是对图像矩阵的操做。
利用imread的Python API ,能够将灰度图像转化成都ndarry类型,实例以下:数组
import cv2 import numpy as np #读入原始图像 img=cv2.imread('j1.jpg',cv2.IMREAD_GRAYSCALE) #灰度化处理 cv2.imshow("1",img); cv2.waitKey(0)
运行结果:
imread的参数说明:OpenCV2.x和OpenCV3.x的语法不一样(我已经抛弃2.x了,全部实例均以OpenCV3.x版本为例),在OpenCV3.x版本中对应的参数是编辑器
参数 | OpenCV3.x的解释 |
---|---|
filename | 图像的文件名,能够包含路径 |
flags | IMREAD_COLOR: 彩色图像;IMREAD_GRAYSCALE:灰色图像;IMREAD_ANYCOLOR:任意图像 |
我使用的编辑工具是Anaconda2的Spyder编辑器,正常状况下会有必定的代码提示,当忘记完整的参数时能够根据提示来补全。
对于图像的灰度化也可使用cv2.cvtColor()函数进行颜色转换 例如图像灰度化:
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
函数
对彩色图像的理解和对灰色图像的理解上类似,灰色图像的每个像素都是有一个数组量化的,二彩色图像的每个像素都是由三个数字组成的向量量化的,最经常使用的就是用R,G,B三个份量来量化的,这三个元素的值分别表明三种基色:Red、Green、Blue的亮度。假设每种基色的数值量化成m=2的n次方,如同8为灰度图像同样,将灰度量化成2的8次方=256个数。RGB图像的红绿蓝三个通道的图像都是一张8位图,所以颜色的总数是256的3次方=16777216,如(0,0,0)表明黑色,(255,255,255)表明白色,(255,0,0)表明红色,(0,0,255)表明蓝色。
下面将RGB彩色图转换为三维的ndarray工具
import cv2 import numpy as np import sys #读入原始图像 image=cv2.imread('j1.jpg',cv2.IMREAD_COLOR) #获得三个颜色通道 b = image[:,:,0] g = image[:,:,1] r = image[:,:,2] #显示三个颜色通道 cv2.imshow('b',b) cv2.imshow('g',g) cv2.imshow('r',r) cv2.waitKey(0) cv2.destroyAllWindows()
运行结果:
3d
提到cv2.cvtColor()函数我就在这里插入点“有趣的东西” 这个函数能够实现好多种变化,首先咱们要知道图像处理中有多种色彩空间,例如 RGB、HLS、HSV、HSB、YCrCb、CIE XYZ、CIE Lab 等。下面对日常用到的颜色空间简单介绍下:code
from matplotlib import pyplot as plt import cv2 img_BGR = cv2.imread('j1.jpg') # BGR plt.subplot(3,3,1) plt.imshow(img_BGR);plt.axis('off');plt.title('BGR') img_RGB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2RGB) plt.subplot(3,3,2) plt.imshow(img_RGB);plt.axis('off');plt.title('RGB') img_GRAY = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2GRAY) plt.subplot(3,3,3); plt.imshow(img_GRAY);plt.axis('off');plt.title('GRAY') img_HSV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HSV) plt.subplot(3,3,4) plt.imshow(img_HSV);plt.axis('off');plt.title('HSV') img_YcrCb = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YCrCb) plt.subplot(3,3,5) plt.imshow(img_YcrCb);plt.axis('off');plt.title('YcrCb') img_HLS = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2HLS) plt.subplot(3,3,6) plt.imshow(img_HLS);plt.axis('off');plt.title('HLS') img_XYZ = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2XYZ) plt.subplot(3,3,7) plt.imshow(img_XYZ);plt.axis('off');plt.title('XYZ') img_LAB = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2LAB) plt.subplot(3,3,8) plt.imshow(img_LAB);plt.axis('off');plt.title('LAB') img_YUV = cv2.cvtColor(img_BGR, cv2.COLOR_BGR2YUV) plt.subplot(3,3,9) plt.imshow(img_YUV);plt.axis('off');plt.title('YUV') plt.show()
运行结果:
blog