图像处理
Posted xjlearningai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像处理相关的知识,希望对你有一定的参考价值。
一、图像读入、显示和保存
1.读入图像
retval = cv2.imread(文件名[, 显示控制参数])
显示控制参数参数如下:
cv.IMREAD_UNCHANGED
cv.IMREAD_GRAYSCALE
cv.IMREAD_COLOR
……
2.显示图像
None = cv2.imshow(窗口名, 图像名)
例如:
cv2.imshpw("demo", image)
等待命令:
retval = cv2.waitKey([, delay])
delay:
delay>0 等待delay毫秒
delay<0 等待键盘单击
delay=0 无限等待
删除所有窗口:
cv2.destroyAllWindows()
3.保存图像
cv2.imwrite(文件地址, 文件名)
二、图像处理入门基础
opencv中,彩色图像的通道顺序和通常的图像描述不同,使用的顺序是:B、G、R。
图像转换:
彩色图像转换成灰度图像;
灰度图像转换为二值图像等。
三、像素处理
1.读取像素
返回值 = 图像(位置参数)
对于灰度图:
p = img[10, 100]
对于RGB图像:
blue = img[10, 100, 0], green = img[10, 100, 1], red = img[10, 100, 2]
2.修改像素值
像素 = 新值
例如:
对于灰度图像:
img[10, 100] = 255
对于RGB图像:
img[10, 100] = [255, 255, 255]
四、numpy访问像素
1.读取像素
返回值 = 图像.item(位置参数)
对于灰度图像:
p = img.item(10, 100)
对于RGB图像:
blue = img.item(10, 100, 0), green = img.item(10, 100, 1), red = img.item(10, 100, 2) 或者 三通道数组 p = img.item(10, 100)
2.修改像素值
图像名.itemset(位置, 新值)
对于灰度图像:
p = img.itemset((10, 100), 255)
对于RGB图像:
img.itemset((10, 100, 0), 255), img.itemset((10, 100, 10), 255), img.itemset((10, 100, 2), 255)
五、获取图像属性
1.形状:行、列、通道;
shape可以获取图像的形状,返回包含行数、列数、通道数的元组。
例如:
import cv2
img1 = cv2.imread(‘灰度图像文件名‘)
print(img1.shape)
# (512, 512)
或者:
import cv2
img2 = cv2.imread(‘彩色图像文件名‘)
print(img2.shape)
# (512, 512, 3)
2.像素数目;
size可以获取图像的像素数目。
灰度图像 返回:行数×列数
彩色图像 返回:行数×列数×通道数
例如:
import cv2
img = cv2.imread(‘图像文件名‘)
print(img.size)
# 786432
3.图像的数据类型;
dtype返回的数图像的数据类型
例如:
import cv2
img = cv2.imread(‘图像文件名‘)
print(img.dtype)
# uint8
六、图像ROI
图像感兴趣区域。
import cv2
img = cv2.imread(‘图像名‘)
face = img[200:400, 200:400]
七、通道拆分和合并
1.拆分通道
import cv2
img = cv2.imread(‘图像名‘)
b, g, r = cv2.split(img)
2.合并通道
import cv2
img = cv2.imread(‘图像名‘)
b, g, r = cv2.split(img)
m = cv2.merge([b, g, r])
八、图像加法
1.numpy加法
取模加法
结果=图像1+图像2
若:
图像1+图像2<=255,结果=图像1+图像2;
图像1+图像2>255,结果=(图像1+图像2)%255;
2.opencv加法
饱和运算
结果=cv2.add(图像1, 图像2)
若:
图像1+图像2<=255,结果=图像1+图像2;
图像1+图像2>255,结果=255;
九、图像融合
将2张或者2张以上的图像信息融合到1张图像上
函数addWeighted
例如:
dst = cv2.addWeighted(src1, alpha, src2, bata, gamma)
dst = src1 * alpha + src2 * beta +gamma
注、亮度调节值gamma不能省略
十、类型转换
将图像由一种类型转换为另一种类型。
opencv提供了200多种不同类型之间的转换。
常用的如下:
cv2.COLOR_BGR2GRAY
cv2.COLOR_BGR2RGB
cv2.COLOR_GRAY2BGR
例如:
import cv2
a = cv2.imread(‘图像名‘)
b = cv2.cvtColor(a, cv2.COLOR_BGR2GRAY)
十一、图像缩放
函数resize
dst = cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
其中,dsize和fx, fy设置一个即可。
例如:
b = cv2.resize(a, (122, 122)) 元祖中第一个为列,第二个为行。
b = cv2.resize(a, None, fx=0.5, fy=0.7)
十二、图像翻转
函数flip
dst = cv2.flip(src, flipCode)
其中,flipCode:
flipCode=0,以X轴为对称轴翻转;
flipCode>0,以Y轴为对称轴翻转;
flipCode<0,以X轴、Y轴方向同时翻转。
例如;
dst = cv2.flip(src, 1)
十三、基础理论
以上是关于图像处理的主要内容,如果未能解决你的问题,请参考以下文章
Python 图像处理 OpenCV :图像平滑(滤波)处理