【问题标题】:How to do Histogram Equalization for many colored images in python?如何对python中的许多彩色图像进行直方图均衡?
【发布时间】:2019-12-20 01:37:46
【问题描述】:

我有许多.png 扩展格式的彩色图像,它们的默认名称为right.1.pngright.2.png、...和right.n.png,还有wrong.1.pngwrong.2.png...和wrong.n.png。我想通过对所有图像使用任何库 numpy、cv2 等在 python 中进行直方图均衡化。我应该将均衡后的图像及其默认名称保存在一个新文件夹中,在当前工作目录中命名为NEWFOLDER

我尝试按照以下链接获取灰度图像,但我无法成功How to implement histogram equalization for images in tensorflow? 处理此问题的任何建议

【问题讨论】:

  • 我相信 OpenCV,cv2.equalizeHist 仅适用于灰度图像。您必须逐个频道进行。 Python Wand 允许您同时在所有通道上执行此操作。请参阅docs.wand-py.org/en/0.5.7/wand/image.html 的均衡。请注意,需要安装 Imagemagick 才能使用 Python Wand。但它出现在大多数 Linux 发行版上。
  • 非常感谢您的回复。我正在使用 Windows,但我会尝试环顾四周并通知您有关此事的任何成功。 @fmw42

标签: python numpy tensorflow histogram cv2


【解决方案1】:

直方图均衡使用 opencv 非常简单。 Here's 文档。

# Histogram equalization

def hist_equal(file_name):
    # Read image file
    img = cv2.imread(DIR_PATH + file_name, 0)
    # Apply histogram equalization
    equ = cv2.equalizeHist(img)
    # Save file to new directory
    cv2.imwrite(NEW_DIR_PATH + file_name, equ)

要遍历目录中的文件,您可以使用 Python 中的 os 库。

# Iterate through each image file
for file_name in os.listdir(DIR_PATH):
    hist_equal(file_name)

【讨论】:

  • 感谢您提供的文档和解决问题的良好试用。我已经阅读并实现了灰度图像,如上面的链接所示。我在想也许 cv2 适用于 RGB 图像我想要的似乎与此处的链接 here 类似。仅对一张彩色图像执行此操作。我需要做超过 100 张图片
  • 您可以一次遍历所有文件,应用直方图均衡化并将每个新图像保存在新目录中。
  • 感谢您的关注,尽管我已经接受了@skillsmuggler 的回答,但我试图循环使用第一条评论中的链接,但未成功。如何使用此链接here 中的模块。我正在尝试循环播放 700 张图片,但出现错误 ValueError: not enough values to unpack (expected 3, got 0)
猜你喜欢
  • 1970-01-01
  • 2017-12-03
  • 2013-02-07
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
相关资源
最近更新 更多