索引缺陷:修改顶点颜色出错,始终得到水平线而非随机点
问题原因与解决方法
错误根源
你代码里的blank[XY] = 1是核心问题:numpy二维数组的索引规则是数组[行坐标, 列坐标],但你生成的XY是(列坐标, 行坐标)的顺序,且直接传入二维数组会触发高级索引的整行选取逻辑,导致整行被设为1,最终出现水平线。
修正后的代码
import cv2 as cv import numpy as np import random # 创建300x300的白色画布 blank = np.ones((300, 300), np.uint8) * 255 # 生成300个随机的列、行坐标 X = [random.randrange(0, 300) for _ in range(300)] Y = [random.randrange(0, 300) for _ in range(300)] # 按[行, 列]的正确格式设置像素为纯黑(0比1更明显) blank[Y, X] = 0 cv.imshow('Random Pixels', blank) cv.waitKey(0) cv.destroyAllWindows()
额外优化说明
- 把像素值从
1改成0:画布初始是255(纯白),0是纯黑,对比更清晰,能直观看到随机点。 - 坐标范围从0开始:numpy数组索引从0到299,
randrange(0,300)更贴合数组索引规则,避免混淆。 - 简化坐标生成:不用分开写两个循环,直接用列表推导式生成X和Y,代码更简洁。
内容的提问来源于stack exchange,提问作者user014162314
相关产品推荐
相关产品推荐

