【问题标题】:Moving and writing pixels of an image -Python-移动和写入图像的像素-Python-
【发布时间】:2020-10-07 22:32:13
【问题描述】:

好的,我有一个关于 python 的新手问题。 所以我有一个列表,其中包含我感兴趣的一些像素的坐标。 我想将这些像素移动到另一张图片中,或者将这些像素保存到一张新图片中。 到目前为止,我正在使用 cv2 和 matplotlib,我什至想用 RGB 值保存坐标并将其写入另一个图像,但我不知道如何开始。 对不起,如果这是一个愚蠢的问题,谢谢

【问题讨论】:

  • 如何创建一个新的空图像并在您的列表中为 (x, y) 执行new_img[x,y, :] = ori_img[x, y, :]
  • 您能做进一步的解释吗?我试过了,我只是得到一个语法错误,假设我的列表就像这样 img = [[x1, y1], [x2, y2]] 并继续,idk 如何迭代它所以我可以替换将原始 img 中的值添加到新的 img 中

标签: python matplotlib cv2


【解决方案1】:
img_src = cv2.imread('someimg.jpg')
h, w, c = img_src.shape

# an empty black image for saving pixels
img_dest = np.zeros((h, w, c), dtype=np.uint8)


for ixy in xy_list:
    x, y = xy_list[ixy]

    # copy pixels at given locations
    img_dest[x, y, :] = img_src[x, y, :]


cv2.imwrite('output.jpg', img_dest)

这能解决您的问题吗?

【讨论】:

    【解决方案2】:

    您可以像在 numpy 数组中一样执行此操作。例如,您想使用所有三个通道获取 RGB 图像的前 10x10 部分。基本上;

    new_image = np.zeros([10, 10, 3], dtype=np.uint8)
    new_image[:, :, :] = old_image[:10, :10, :]
    

    【讨论】:

    • 我的意思是,我刚刚得到了我感兴趣的像素的坐标,所以如果我得到了像素的 RGB 值,这可以工作吗?抱歉,如果我理解不好,英语不是我的母语
    • 你的意思是找到具体像素值的坐标?当然,您可以使用它来检查像素值以找到您想要的坐标。但是,使用 numpy 函数来获取特定值的索引是一种更好的方法(np.where)。请查收:stackoverflow.com/questions/27175400/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多