np.ones(gray.shape[:2], dtype="uint8") * 0什么意思
时间: 2024-04-19 11:27:38 浏览: 33
`np.ones(gray.shape[:2], dtype="uint8")` 是一个创建与 `gray` 形状相同的全为1的数组,数据类型为无符号8位整数(dtype="uint8")。这意味着数组的每个元素都是1。
`* 0` 表示将上述创建的数组中的每个元素都乘以0,相当于将数组中的所有元素都变为0。因此,整个表达式 `np.ones(gray.shape[:2], dtype="uint8") * 0` 的作用是创建一个与 `gray` 形状相同的全为0的数组。
相关问题
import matplotlib.pyplot as plt import matplotlib.image as mping import numpy as np from PIL import Image img_path = "D:/作业/兵马俑.jpg" gray_img = Image.open(img_path).convert("L") # 转为灰度图 gray_array = np.array(gray_img) plt.figure(1) plt.imshow(gray_img, cmap='gray') a = gray_array.shape[0] b = gray_array.shape[1] img2 = np.ones((a, b), dtype=np.uint8) * 255 img2[:, :b//2] = gray_img[:, :b//2] img2[:, b//2:] = 255 plt.figure(2) plt.imshow(img2, cmap='gray') img3 = np.ones((a, b), dtype=np.uint8) * 255 img3[:, :b//2] = gray_img[:, :b//2] img3[:, b//2:] = np.fliplr(gray_img[:, :b//2]) plt.figure(3) plt.imshow(img3, cmap='gray')错误如下:TypeError: 'Image' object is not subscriptable请修改
将代码中的 `gray_img[:, :b//2]` 和 `gray_img[:, :b//2]` 修改为 `gray_array[:, :b//2]` 和 `gray_array[:, b//2:]` 即可,因为 `Image` 对象不支持切片操作,需要将其转换为 `numpy` 数组进行处理。修改后的代码如下:
```
import matplotlib.pyplot as plt
import matplotlib.image as mping
import numpy as np
from PIL import Image
img_path = "D:/作业/兵马俑.jpg"
gray_img = Image.open(img_path).convert("L") # 转为灰度图
gray_array = np.array(gray_img)
plt.figure(1)
plt.imshow(gray_img, cmap='gray')
a = gray_array.shape[0]
b = gray_array.shape[1]
img2 = np.ones((a, b), dtype=np.uint8) * 255
img2[:, :b//2] = gray_array[:, :b//2]
img2[:, b//2:] = 255
plt.figure(2)
plt.imshow(img2, cmap='gray')
img3 = np.ones((a, b), dtype=np.uint8) * 255
img3[:, :b//2] = gray_array[:, :b//2]
img3[:, b//2:] = np.fliplr(gray_array[:, :b//2])
plt.figure(3)
plt.imshow(img3, cmap='gray')
```
将代码中图片改为灰度图import matplotlib.pyplot as plt import matplotlib.image as mping import numpy as np img = mping.imread('D:\作业\兵马俑.jpg') plt.figure(1) plt.imshow(img) a = img.shape[0] b = img.shape[1] # 只保留左半部分,右半部分置为白色 img2 = np.ones((a, b, 3), dtype=np.uint8) * 255 img2[:, :b//2, :] = img[:, :b//2, :] img2[:, b//2:, :] = 255 plt.figure(2) plt.imshow(img2) # 左右镜像 img3 = np.ones((a, b, 3), dtype=np.uint8) * 255 img3[:, :b//2, :] = img[:, :b//2, :] img3[:, b//2:, :] = np.fliplr(img[:, :b//2, :]) plt.figure(3) plt.imshow(img3)
可以使用matplotlib中的cmap参数将彩色图片转换为灰度图。修改代码如下:
import matplotlib.pyplot as plt
import matplotlib.image as mping
import numpy as np
img = mping.imread('D:\作业\兵马俑.jpg')
gray_img = np.dot(img[...,:3], [0.299, 0.587, 0.114]) # 将彩色图片转换为灰度图
plt.figure(1)
plt.imshow(gray_img, cmap='gray')
a = gray_img.shape[0]
b = gray_img.shape[1]
# 只保留左半部分,右半部分置为白色
img2 = np.ones((a, b, 3), dtype=np.uint8) * 255
img2[:, :b//2, :] = img[:, :b//2, :]
img2[:, b//2:, :] = 255
plt.figure(2)
plt.imshow(img2)
# 左右镜像
img3 = np.ones((a, b, 3), dtype=np.uint8) * 255
img3[:, :b//2, :] = img[:, :b//2, :]
img3[:, b//2:, :] = np.fliplr(img[:, :b//2, :])
plt.figure(3)
plt.imshow(img3)
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)