【发布时间】:2017-11-11 06:58:10
【问题描述】:
您可以通过 OpenCV 函数 cv2.add() 或简单地通过 numpy 操作 res = img1 + img2 添加两个图像。两个图像应该具有相同的深度和类型,或者第二个图像可以只是一个标量值。
我应该用什么来比较它们的深度和图像类型。我研究过
img.dtype
img.type()
img.depth()
请帮忙。
【问题讨论】:
您可以通过 OpenCV 函数 cv2.add() 或简单地通过 numpy 操作 res = img1 + img2 添加两个图像。两个图像应该具有相同的深度和类型,或者第二个图像可以只是一个标量值。
我应该用什么来比较它们的深度和图像类型。我研究过
img.dtype
img.type()
img.depth()
请帮忙。
【问题讨论】:
标量值不是图像,它是标量值。 如果将标量值添加到图像,则该值将添加到图像中的所有像素(如果图像是彩色图像,则该值将添加到所有 BRG 层中的所有像素)
我不知道您所说的图像深度是什么意思。如果它是您所指的层数,那么是,两个图像应该具有相同的深度。但不是同一类型。不同类型的图片可以叠加在一起。
但有时添加 2 张不同类型的图像没有任何意义。例如,float 类型的图像的像素值在 [0, 1] 范围内。 int 类型的图像的像素值在 [0, 255] 范围内。因此,添加这些文件而不将它们转换为相同类型是没有意义的。
您可以按如下方式比较图像的深度(层数)和类型。
img.dtype # to compare the type
img.shape # to compare the number of layers
【讨论】:
OpenCV 使用 numpy 类型的图像。具有宽度w 和高度h 的单通道图像存储为大小为h,w 的二维数组,而具有N 通道的图像由大小为h,w,N 的3D 数组存储。您可以使用array.shape 访问这些值。同样,您可以使用array.dtype 访问该类型。
【讨论】: