1.形状-shape
通过shape关键字获取图像形状,返回值为图像行数,列数以及通道数的元组。
import cv2
image = cv2.imread("灰度图像”)
print(image.shap)
#(512,512)
import cv2
image = cv2.imread("彩色图像”)
print(image.shap)
#(512,512,3)
import cv2
#获取图片
image = cv2.imread('E:/pythonProject/xin.jpeg',cv2.IMREAD_UNCHANGED)
#获取图像形状
print(image.shape)
#显示图像
cv2.imshow("demo",image)
#等待窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图片
cv2.imwrite('E:/pythonProject/xin0.jpeg')
输出结果为422行、470以及3通道数:
(422, 470, 3)
2.像素-size
通过关键字四size来获取图像总像素。灰度图像返回值为行数*列数的值,彩色图像返回值为行数*列数*通道数得值
核心代码为
print(image.size)
3.图像类型-dtype
通过关键字dtype通常来获取图像的数据类型,一般返回值为uint8
核心代码为
print(image.dtype)
import cv2
#获取图片
image = cv2.imread('E:/pythonProject/xin.jpeg',cv2.IMREAD_UNCHANGED)
#获取图像形状
print(image.shape)
#获取像素数目
print(image.size)
#获取图像dtype
print(image.dtype)
#显示图像
cv2.imshow("demo",image)
#等待窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
#写入图片
cv2.imwrite('E:/pythonProject/mei0.jpeg')
输出结果如下:
(422, 470, 3)
595020
uint8
ROI(region of interest),感兴趣区域。机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,ROI。在Halcon、OpenCV、Matlab等机器视觉软件上常用到各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。
1.获取ROI区域
通过像素矩阵可以直接获得ROI区域
核心代码
import cv2
strawerry = image[100:300,300:500]
image[200:400,400:600]=strawerry
import cv2
import numpy as np
#获取图片
image = cv2.imread('E:/pythonProject/mei.jpeg',cv2.IMREAD_UNCHANGED)
#定义一个300*300的矩阵 3为通道数
strawberry = np.ones((200,200,3))
#显示原始图片
cv2.imshow("demo",image)
#显示ROI区域
strawberry = image[100:300,300:500]
cv2.imshow("berries",strawberry)
#等待窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果显示:
2.ROI区域融合
将获取的ROI区域融合到固定位置,如左上角
import cv2
import numpy as np
#获取图片
image = cv2.imread('E:/pythonProject/mei.jpeg',cv2.IMREAD_UNCHANGED)
#定义一个200*200的矩阵 3为通道数
strawberry = np.ones((200,200,3))
#原图片输出
# cv2.imshow("demo1",image)
#感兴趣区域ROI融合
strawberry = image[100:300,300:500]
image[0:200,0:200] = strawberry
cv2.imshow("berries",image)
#等待窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
j结果显示如下
将两张图像融合,只需再读取一张图片即可,原理与前面相似
import cv2
import numpy as np
#获取图片
image = cv2.imread('E:/pythonProject/mei.jpeg',cv2.IMREAD_UNCHANGED)
test = cv2.imread('E:/pythonProject/xin.jpeg',cv2.IMREAD_UNCHANGED)
#定义一个200*200的矩阵 3为通道数
strawberry = np.ones((200,200,3))
#原图片输出
cv2.imshow("demo1",image)
#感兴趣区域ROI融合
strawberry = image[150:250,350:450]
test[220:320,320:420] = strawberry
cv2.imshow("berries",test)
#等待窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果如下
在Photoshop中有一个很重要概念叫图像通道,在RGB色彩模式下就是指那单独的红色、绿色、蓝色部分。也就是说,一幅完整的图像,是由红色绿色蓝色三个通道组成的。他们共同作用产生了完整的图像imp
1.通道拆分
OpenCV里面的图像通道是BGR,通过split()函数进行通道拆分。
import cv2
#读取图片
image = cv2.imread('E:/pythonProject/xin.jpeg',cv2.IMREAD_UNCHANGED)
#拆分通道
b,g,r = cv2.split(image)
#显示原图像
cv2.imshow("B",b)
cv2.imshow("G",g)
cv2.imshow("R",r)
#等待窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果如下所示
2.合并通道
OpenCV里面的通道是BGR,现将通道拆分,然后再合并成RGB通道
import cv2
#读取图片
image = cv2.imread('E:/pythonProject/xin.jpeg',cv2.IMREAD_UNCHANGED)
#拆分通道
b,g,r = cv2.split(image)
#合并通道
m = cv2.merge([r,g,b])
cv2.imshow("Merge",m)
#等待窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果如下
若把BGR换成BGR,则合成图与原图一样
可以只提取RGB图像中的某一个颜色,其他颜色可设为0
获取B颜色通道,将GR通道设为0
import cv2
import numpy as np
#读取图片
image = cv2.imread('E:/pythonProject/xin.jpeg',cv2.IMREAD_UNCHANGED)
rows, cols, chn = image.shape
#拆分通道
b = cv2.split(image)[0]
g = np.zeros((rows,cols), dtype=image.dtype)
r = np.zeros((rows,cols), dtype=image.dtype)
#合并通道
m = cv2.merge([b,g,r])
cv2.imshow("Mrege",m)
#等待窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果过下
获取R通道颜色,将其他通道设为0
绿色通道修改方法与上述相同
本文参考该博主文章,如有不足之处请多多见谅