opencv简单的图像处理--新手入门(3)

目录

 

 

一、图像属性介绍

图像形状的获取

像素数

图像数据类型

二、图像ROI

三、拆分通道

四、图像合并


 

一、图像属性介绍

图像形状的获取

即图像的行列树目:shape

import cv2
img1=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",0)
img2=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",1)
print("img1的行列:",img1.shape)
print("img2的行列:",img2.shape)

IPython 6.2.1 -- An enhanced Interactive Python.
img1的行列: (750, 500)
img2的行列: (750, 500, 3)

对于灰度图像img1,他的shape只有行列

而对于彩色图像出了行列外,还有一个通道数,正常情况下是3

像素数

像素:size

import cv2
img1=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",0)
img2=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",1)
print("img1的像素:",img1.size)
print("img2的像素:",img2.size)

runfile('/Users/admin/.spyder-py3/temp.py', wdir='/Users/admin/.spyder-py3')
img1的像素: 375000
img2的像素: 1125000

我们可以看到,像素数就是shape之积

375000=750*500

1125000=750*500*3

图像数据类型

import cv2
img1=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",0)
img2=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",1)
print("img1的数据类型:",img1.dtype)
print("img2的数据类型:",img2.dtype)

runfile('/Users/admin/.spyder-py3/temp.py', wdir='/Users/admin/.spyder-py3')
img1的数据类型: uint8
img2的数据类型: uint8

二、图像ROI

region of interest:感兴趣区域

import cv2
img=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",1)
eyes=img[180:250,50:150]
cv2.imshow("eyes",eyes)
cv2.waitKey(0)
cv2.destroyAllWindows()

比如我们发现,测试照片的眼睛非常好看,想把它单独取出来,

就找到眼睛在区域,[180:250,50:150]

图像的复制

可以把取出来的一个图像,复制到你想要的位置


import cv2
img=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",1)
eyes=img[180:250,50:150]
img[180:250,350:450]=eyes
cv2.imshow("eyes",img)
cv2.waitKey(0)
cv2.destroyAllWindows()

需要注意的是复制的区域一定要与复制图像的区域大小要一致

三、拆分通道

split函数

我之前说过彩色图像是由BGR三个通道组成的,也就是三个0-255的数组

如果把彩色图片拆分后,那么得到的应该是三张灰色图像

import cv2
img=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",1)
b,g,r=cv2.split(img)
cv2.imshow("original",img)
cv2.imshow("b",b)
cv2.imshow("g",g)
cv2.imshow("r",r)
cv2.waitKey(0)
cv2.destroyAllWindows()

四、图像合并

merge

其实就跟split刚好相反

import cv2
img=cv2.imread("/Users/admin/Desktop/模型数据/testz.png",1)
b,g,r=cv2.split(img)
BGR=cv2.merge([b,g,r])
RGB=cv2.merge([r,g,b])
cv2.imshow("BGR",BGR)
cv2.imshow("RGB",RGB)
cv2.waitKey(0)
cv2.destroyAllWindows()

这里我们特别把RGB和BGR的顺序分别看了下,可以自行对比下结果

猜你喜欢

转载自blog.csdn.net/Andy_shenzl/article/details/86362056