当前位置: 首页 > 面试题库 >

使用OpenCV在Python中反转图像

东方吕恭
2023-03-14
问题内容

我想加载彩色图像,将其转换为灰度,然后反转文件中的数据

我需要的是:遍历OpenCV中的数组并使用此公式更改每个值(这可能是错误的,但对我来说似乎很合理):

img[x,y] = abs(img[x,y] - 255)

但我不明白为什么它不起作用:

def inverte(imagem, name):
    imagem = abs(imagem - 255)
    cv2.imwrite(name, imagem)


def inverte2(imagem, name):
    for x in np.nditer(imagem, op_flags=['readwrite']):
        x = abs(x - 255)
    cv2.imwrite(name, imagem)


if __name__ == '__main__':
    nome = str(sys.argv[1])
    image = cv2.imread(nome)
    gs_imagem = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    inverte(gs_imagem, "invertida.png")
    inverte2(gs_imagem, "invertida2.png")

我不想做一个显式循环(我想变得更pythonic)。我可以看到,在一张具有白色背景的图像中,它变成了黑色,但是仅此而已,就好像其他颜色并没有太大变化(如果有)。


问题答案:

您几乎做到了。abs(imagem-255)由于您dtype是一个无符号整数,因此会给您错误的结果,这使您受骗。您必须执行以下操作(255-imagem)才能使整数保持无符号状态:

def inverte(imagem, name):
    imagem = (255-imagem)
    cv2.imwrite(name, imagem)

您还可以使用bitwise_notOpenCV的功能反转图像:

imagem = cv2.bitwise_not(imagem)


 类似资料:
  • 本文向大家介绍在Python中使用OpenCV裁剪图像,包括了在Python中使用OpenCV裁剪图像的使用技巧和注意事项,需要的朋友参考一下 什么是裁剪? 裁剪是从摄影或插图图像中去除不需要的外部区域。该过程通常包括去除图像的某些外围区域,以从图片中去除多余的垃圾,改善其取景,改变纵横比,或使主题与背景突出或分离。 我们将使用 OpenCV-python (cv2)的这些函数, imread()

  • 问题内容: 我如何像以前在PIL中一样使用OpenCV裁剪图像。 PIL的工作示例 但是我如何在上做到这一点? 这是我尝试的: 但这是行不通的。 我认为我使用不正确。如果是这种情况,请说明如何正确使用此功能。 问题答案: 非常简单。使用numpy切片。

  • 本文向大家介绍在Python中使用OpenCV将彩色图像灰度化,包括了在Python中使用OpenCV将彩色图像灰度化的使用技巧和注意事项,需要的朋友参考一下 在Python中,我们可以使用一个名为cv2的OpenCV库。Python不包含cv2,因此我们需要单独安装它。 对于Windows: 对于Linux: 在下面给出的程序中,我们使用以下三个功能: imread(): 它将图像文件的绝对路径

  • 问题内容: 我刚刚在Windows 7计算机上安装了OpenCV。结果,我得到一个新目录: 在此目录中,我有两个文件:和。 然后,我尝试使用from Python。我执行以下操作: 结果,我收到以下错误消息: 我究竟做错了什么? 添加 至于有人建议在这里,我抄的内容的。它没有帮助。 加了2 我的环境变量具有以下值: 我需要改变什么吗?我需要添加一些东西吗? 加3 我认为我的问题很笼统:如何使用图书

  • 本文向大家介绍在Python下利用OpenCV来旋转图像的教程,包括了在Python下利用OpenCV来旋转图像的教程的使用技巧和注意事项,需要的朋友参考一下 OpenCV是应用最被广泛的的开源视觉库。他允许你使用很少的代码来检测图片或视频中的人脸。 这里有一些互联网上的教程来阐述怎么在OpenCV中使用仿射变换(affine transform)旋转图片--他们并没有处理旋转一个图片里的矩形一般

  • 本文向大家介绍在Python中使用OpenCV将RGB格式的图像转换为HSV格式的图像,包括了在Python中使用OpenCV将RGB格式的图像转换为HSV格式的图像的使用技巧和注意事项,需要的朋友参考一下 的HSV是另一种类型的颜色空间,其中H代表色相,S表示饱和度和V代表值。 一个色调代表颜色。从0度到360度的角度。 角度 颜色 0-60 红 60-120 黄色 120-180 绿色 180