假设我们有以下图像:
我想在这张图像上应用一些按位和,所以我只是尝试了以下掩码:
import cv2
import matplotlib.pyplot as plt
import numpy as np
image1 =cv2.imread("ML.png")
image1 =cv2.resize(image1,(400,400))
print(image1)
mask =np.zeros((400,400,3),dtype='uint8')
mask[0:50,0:120]=1
mask[70:180,130:320] =1
mask[150:240,190:390] =1
print(mask)
image1_changed =cv2.bitwise_and(image1,mask)
print(image1_changed)
plt.imshow(np.uint8(image1_changed))
plt.show()
实际上我想只留下头部并删除其余部分,所有矩阵都在这里:
[[[255 250 245]
[255 250 245]
[255 250 245]
...
[255 250 245]
[255 250 245]
[255 250 245]]
[[255 250 245]
[255 250 245]
[255 250 245]
...
[255 250 245]
[255 250 245]
[255 250 245]]
[[255 250 245]
[255 250 245]
[255 250 245]
...
[255 250 245]
[255 250 245]
[255 250 245]]
...
[[255 250 245]
[255 250 245]
[255 250 245]
...
[255 250 245]
[255 250 245]
[255 250 245]]
[[255 250 245]
[255 250 245]
[255 250 245]
...
[255 250 245]
[255 250 245]
[255 250 245]]
[[255 250 245]
[255 250 245]
[255 250 245]
...
[255 250 245]
[255 250 245]
[255 250 245]]]
[[[1 1 1]
[1 1 1]
[1 1 1]
...
[0 0 0]
[0 0 0]
[0 0 0]]
[[1 1 1]
[1 1 1]
[1 1 1]
...
[0 0 0]
[0 0 0]
[0 0 0]]
[[1 1 1]
[1 1 1]
[1 1 1]
...
[0 0 0]
[0 0 0]
[0 0 0]]
...
[[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]]
[[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]]
[[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]]]
[[[1 0 1]
[1 0 1]
[1 0 1]
...
[0 0 0]
[0 0 0]
[0 0 0]]
[[1 0 1]
[1 0 1]
[1 0 1]
...
[0 0 0]
[0 0 0]
[0 0 0]]
[[1 0 1]
[1 0 1]
[1 0 1]
...
[0 0 0]
[0 0 0]
[0 0 0]]
...
[[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]]
[[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]]
[[0 0 0]
[0 0 0]
[0 0 0]
...
[0 0 0]
[0 0 0]
[0 0 0]]]
如何定义好这样的矩阵?以前的代码返回黑色图像,请帮助我
根据我的理解,你需要保留头部(大脑)部分并消除休息。您可以通过从原始图像中选择点并将其设置为 255 来创建蒙版,请注意,您将其指定为 1 ,因为它是黑色(接近 0),所以不会很清晰。请参阅下面的代码以及解释中的注释。希望这有帮助。
import cv2
import numpy as np
#Read image
image = cv2.imread('ML.png')
#Create mask as same as image size.
mask =np.zeros((image.shape[0],image.shape[1],1),dtype='uint8')
#Mask rectangle is selected as points from original image.
mask[30:240,57:168]=255
#Resize image and mask
image1 =cv2.resize(image,(400,400))
mask1 = cv2.resize(mask,(400,400))
#Do bitwise and
image1_changed =cv2.bitwise_and(image1,image1, mask=mask1)
#Save mask and masked image result.
cv2.imwrite("mask.png",mask1)
cv2.imwrite("changed.png",image1_changed)