【问题标题】:skimage convert to grayscale resulting to a black imageskimage 转换为灰度导致黑色图像
【发布时间】:2020-02-07 02:50:04
【问题描述】:

我正在抓取图像并尝试将它们转换为灰度。但如果我查看图像。它是纯黑色的。有人可以告诉我这有什么问题吗?谢谢

这是我的sn-p

import cv2
from skimage import io
from skimage import data
from skimage.color import rgb2gray

#...some codes

for i in elements:
    try:
        i.click()
    except ElementClickInterceptedException:
        driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
        i.click()
    url = driver.find_element_by_xpath('//*[@class="slider-list"]/div/img').get_attribute('src').replace('height=600','height=1200').replace('quality=70','quality=100')
    print (url)
    name = driver.find_element_by_xpath('//*[@class="slider-list"]/div/img').get_attribute('alt') + '.jpg'

    print (name)
    img = io.imread(url)
    new = rgb2gray(img)
    cv2.imwrite(os.path.join(fldrnm, name), new)

【问题讨论】:

  • 请删除此问题的冗余逻辑并使用最少的代码进行测试。只需将文件读取为灰色,然后写入。此外,您在提供的代码中缺少 cv2 包含。
  • 完成,先生。 @RavitejaNarra

标签: python selenium opencv image-processing scikit-image


【解决方案1】:
Import cv2
Img = cv2.inread(filepath)
Img = cv2.cvtColor(Img, cv2.COLOR_RGB2GRAY)
cv2.imwrite(path,img)

【讨论】:

  • 我尝试将其更改为new = rgb2gray(img),但我得到了黑色图像结果
  • 在您发布的错误中,大小似乎很奇怪。 [164,165,151]....你能打印出 img post reading 的形状吗?我猜这不是 3 通道图像。
  • 可能在保存文件之前,可以用cb2.imshow(...)查看,确认问题不是rgb2grey()
  • Cv2.waitKey 将在 cv2.imshow 调用后粘贴。下载什么?那么,使用 cv2.imshow 可以正确看到灰度图像吗?
  • 我也别无选择。最后一件事是尝试保存 rgb 图像并检查它。可能是 cv2 模块没有正确安装。
【解决方案2】:

问题的最初原因是skimage.color.rgb2gray 会将图像重新缩放为 [0, 1] 中的浮点值,即使原始图像包含 [0, 255] 中的 uint8 值。这样做是为了在长序列操作期间保持精度。在原始问题中使用 skimage.io.imsave 而不是 cv2.imwrite 会起作用,并且在保存之前使用 skimage.util.img_as_ubyte

查看此页面了解更多详情:

https://scikit-image.org/docs/dev/user_guide/data_types.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多