gpt4 book ai didi

python - RGB 图像参数的预期 Ptr

转载 作者:行者123 更新时间:2023-12-02 16:18:17 24 4
gpt4 key购买 nike

我试图找出图像中有多少像素具有不同图像的相同像素的颜色范围。我使用的两个图像都是 rgb。我想用这样的东西来做到这一点,但我坚持
获取参数的 Expected Ptr

difference = cv2.absdiff(imageA, imageB)
b, g, r = cv2.split(difference)
我曾尝试将该图像分类为一个 numpy 数组,但随后出现错误 ValueError: not enough values to unpack (expected 3, got 1) for split 函数。有没有更好的方法来做到这一点?

最佳答案

  • 确保 imageAimageB共享相同数量的 channel 和相同的宽度和高度:
    assert(imageA.shape == imageB.shape)
  • 确保图像的类型彼此相同:
    assert(imageA.dtype == imageB.dtype)

  • 我怀疑 (1) 或 (2) 是 False .要计算 OpenCV 中的绝对差异,数据类型和大小应该完全相同。确保 (1) 和 (2) 都是 True在调用 cv2.absdiff 之前. cv2.split与传入的数据类型无关,因此不应该存在问题。
    此外,考虑到您在使用 NumPy 数组时的错误消息,这让我相信一个图像是灰度的,另一个是彩色的。当您尝试执行 cv2.split 时,这是有道理的。 ,它只提供一个 channel 而不是三个。您要确保将苹果与苹果进行比较,因此您可以检查图像是否为灰度并在必要时转换为彩色。您可以通过简单地复制 channel 从灰度图像创建“彩色”图像。这可以使用 cv2.cvtColor 在后台完成。并提供正确的标志。在这种情况下,b cv2.COLOR_BGR2GRAY (假设您使用 cv2.imread 读取图像,我怀疑是这种情况)。
    所以:
    if len(imageA.shape) == 2:
    imageA = cv2.cvtColor(imageA, cv2.COLOR_GRAY2BGR)
    if len(imageB.shape) == 2:
    imageB = cv2.cvtColor(imageB, cv2.COLOR_GRAY2BGR)

    difference = cv2.absdiff(imageA, imageB)
    b, g, r = cv2.split(difference)

    关于python - RGB 图像参数的预期 Ptr<cv::UMat>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63676396/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com