我有一个列表“ L”。我想使用此数字列表为图像创建地图。因此,我首先创建一个类似于输入图像大小的矩阵“ n”-2084、2084
L = [234, 78, 56, 98, 555, 876, 998 ...]
n = np.zeros((2084, 2084), dtype = "uint8")
这给了我一个大小为2084 x 2084的矩阵。现在我将其展平以创建一个数组。
j = n.flatten()
因为我要为此创建一个灰度图像并将该图像中在列表“ L”中指定的位置替换为白色。我将数组中的0替换为255
for i in L:
j[i] = 255
此后,我将数组重塑为矩阵形式。
o = np.reshape(j, (2084, 2084))
但是当我尝试使用matplotlib打开此o时,由于矩阵中的值为255,我只能得到没有白色像素的黑色图像。
plt.imshow(o, cmap="gray", vmin=0, vmax=255)
我想使用列表中的数字将其值映射为图像中的位置,并将该位置的颜色更改为白色。
在理解图像方面的一些基本知识方面我可能是错的,但在此有所帮助
答案 0 :(得分:2)
我认为这是屏幕分辨率问题。使用您的代码(略有简化)但降低分辨率显然是可行的:
import matplotlib.pyplot as plt
import numpy as np
L = [234, 78, 56, 98, 555, 876, 998]
n = np.zeros((32, 32), dtype="uint8")
n.ravel()[L] = 255
plt.figure(figsize=(2.5, 2.5))
plt.imshow(n, cmap="gray", vmin=0, vmax=255)
2048x2048大于我的屏幕分辨率,因此在那种情况下我什么也看不到:每个图像像素都小于屏幕像素。而且,所有白点都位于第一行像素中,这使得它变得更加难以看清。
答案 1 :(得分:1)
您的代码没有错,但是图像中的白点过于分散,无法在屏幕上看到它们。如果要查看图像中的白点,可以通过添加plt
来将plt.figure(figsize=(M, M))
设置为高分辨率,然后再添加N = 1000
L = [8000, 8001, 8002, 8003, 9000, 9001, 9002, 9003, 10000, 10001, 10002, 10003, 11000, 11001, 11002, 11003]
a = np.zeros((N,N), dtype=np.uint8)
a.ravel()[L] = 255
np.reshape(a, (N,N))
plt.figure(figsize=(100, 100))
_ = plt.imshow(a, cmap="gray", vmin=0, vmax=255)
,其中M是一个大整数,例如100。示例代码如下:
BiometricPrompt.Builder(context)
.setTitle(biometricBuilder.title ?: "")
.setSubtitle(biometricBuilder.subtitle ?: "")
.setDescription(biometricBuilder.description ?: "")
.setNegativeButton(biometricBuilder.negativeButtonText ?: "",
context.mainExecutor, DialogInterface.OnClickListener { dialogInterface, i -> biometricCallback.onAuthenticationCancelled() })
.build()
.authenticate(CancellationSignal(), context.mainExecutor,
BiometricCallbackV28(biometricCallback))