图像处理基础入门
- 图像是由像素组成
- 像素越多图像越清晰越细腻;
- 像素个数=行×列
- 图像分为二值图像、灰度图像、RGB图像
- 比较常见的操作:RGB转灰度(信息不能掩盖);灰度转二值
像素处理
利用Opencv直接进行索引;分为灰度图和彩色图
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
import cv2
i=cv2.imread("image\\lena256.bmp",cv2.IMREAD_UNCHANGED)
#请确保当前目录下有灰度图像lena256.bmp
p=i[100,100]
print(p)
i[100,100]=255
p=i[100,100]
print(p)
# -*- coding: utf-8 -*-
import cv2
i=cv2.imread("e:\\lesson\\image\\lenacolor.png",cv2.IMREAD_UNCHANGED)
#请确保在指定目录下有彩色图像文件
print(i[100,100])
i[100,100,0]=255
print(i[100,100])
'''
同时更改三个通道
print(i[100,100])
i[100,100]=[255,255,255]
print(i[100,100])
'''
'''
更改一个像素块
cv2.imshow("original",i)
i[100:150,100:150]=[0,0,255]
cv2.imshow("result",i)
cv2.waitKey(0)
cv2.destroyAllWindows()
'''
使用numpy访问像素
#彩色图
print(i.item(100,100,2))
i.itemset((100,100,2),255)
#灰度图
print(i.item(100,100))
i.itemset((100,100),255)
获取图像属性
- 形状:行、列、通道数:img.shape
- 像素数目:行×列×通道数 img.size img.dtype
- 图像每个像素的数据类型:img.dtype
感兴趣区域ROI
把区域进行引用:
face=img[200:400,200:350]
通道拆分和合并
主要介绍split函数和merge函数
通道拆分
#普通方法
b=img[:,:,0]
g=img[:,:,1]
r=img[:,:,2]
#split函数
b,g,r=cv2.split(img)
b=cv2.split(img)[0];
g=cv2.split(img)[1];
r=cv2.split(img)[2];
通道合并
b,g,r=cv2.split(a)
bgr=cv2.merge([b,g,r])
合并蓝色
import cv2
import numpy as np
a=cv2.imread("image\lenacolor.png")
rows,cols,chn=a.shape
b=cv2.split(a)[0]
g = np.zeros((rows,cols),dtype=a.dtype)
r = np.zeros((rows,cols),dtype=a.dtype)
m=cv2.merge([b,g,r])
cv2.imshow("merge",m)
cv2.waitKey()
cv2.destroyAllWindows()