【发布时间】:2020-04-29 08:37:39
【问题描述】:
我正在尝试使用 python cv2 修改图像。所以我将图像导入 python 并将其表示为一个数组。然后我将图像的红色通道更改为全0,然后将更改后的数组保存到图像中。在这里我发现了问题,当我加载更改后的图像时,更改后的图像的红色通道不全为 0(但它必须全为 0 对吗?因为我已经做了这个过程)。我感到很困惑。我做错什么了吗?
代码如下:
im = cv2.imread("original.jpg",1)
[h,w,c] = im.shape
//print(im[:,:,0])
img2 = im.copy()
for i in range(0,h):
for j in range(0,w):
img2[i,j,0] = 0
cv2.imwrite("changed.jpg", img2)
这是原来的红色通道
[[ 41 17 40 ... 61 82 104]
[ 48 31 27 ... 76 51 38]
[ 61 58 29 ... 57 53 109]
...
[123 140 147 ... 95 88 74]
[133 160 155 ... 85 83 89]
[ 96 78 84 ... 43 47 38]]
这是更改后的红色通道(它必须全为 0,但不是)
[[ 9 0 10 ... 0 9 30]
[10 0 0 ... 7 0 0]
[15 14 0 ... 0 0 19]
...
[ 0 1 5 ... 13 4 0]
[ 9 31 21 ... 13 12 15]
[ 0 0 0 ... 0 0 0]]
【问题讨论】:
-
OpenCV
imread/imwrite使用 BGR 顺序 - 您正在修改红色通道,而不是蓝色通道。
标签: python opencv image-processing