【问题标题】:How to pixelate image using OpenCV in Python?如何在 Python 中使用 OpenCV 像素化图像?
【发布时间】:2019-08-25 18:39:04
【问题描述】:

此链接中的最佳答案How to pixelate a square image to 256 big pixels with python? 使用PIL 对图像进行像素化。将图像从PIL 转换为cv2.Mat 是可能的,但我不允许使用其他库,而且我找不到任何使用opencv 的好方法。

有没有办法只在 Python 中使用OpenCV 库来像素化图像?任何示例图像都可以。非常感谢我可以控制以供以后调整的像素大小参数的解决方案。

【问题讨论】:

    标签: python opencv image-processing pixelate


    【解决方案1】:

    编辑^2

    在自己的帮助下,我将上面提到的最佳答案Mark Setchell's answer 移动到了普通的OpenCV Python 代码。 (查看我的答案的revision history 以查看使用循环的旧版本。)


    import cv2
    
    # Input image
    input = cv2.imread('images/paddington.png')
    
    # Get input size
    height, width = input.shape[:2]
    
    # Desired "pixelated" size
    w, h = (16, 16)
    
    # Resize input to "pixelated" size
    temp = cv2.resize(input, (w, h), interpolation=cv2.INTER_LINEAR)
    
    # Initialize output image
    output = cv2.resize(temp, (width, height), interpolation=cv2.INTER_NEAREST)
    
    cv2.imshow('Input', input)
    cv2.imshow('Output', output)
    
    cv2.waitKey(0)
    

    输入(来自链接的问题):

    输出:

    免责声明:总的来说,我是 Python 的新手,尤其是 OpenCV 的 Python API(C++ for the win)。非常欢迎评论、改进、强调 Python 的禁忌!

    【讨论】:

    • 为什么不cv2.resize(...INTER_NEAREST...)?
    • @MarkSetchell 您是指“第一个”cv2.resize(...) 还是“第二个”(在链接答案的代码中)?对于后者:我试过了,但我得到了一些插值图像,而不是那种“像素化”的图像。 PIL 和 OpenCV 在这个问题上似乎存在差异 - 我认为这是原因,提问者首先发布了这个问题。
    • 我刚刚试了一下,如果我用这个 big = cv2.resize(temp, (w, h), 0, 0, cv2.INTER_NEAREST) 替换 "Initialize" 之后的所有代码,这对我来说似乎工作正常,别担心,反正你已经有了我的投票; -)
    • 酷 :-) 团队合作! Ein bisschen Zusammenarbeit ist immer gut :-)
    • @mLstudent33 我不确定我记得为什么。有时我不止一次回答问题,因为 OP 在 Python 和 OpenCV 中要求一些东西,但我可以用 ImageMagick 单线更简单地做到这一点,后来我意识到我可以用 Python 做到这一点,因为它基于完全不同的技术,我做了一个新的答案来保持清楚。其他时候,我将 4 种不同的技术放在一个答案 stackoverflow.com/a/57579290/2836621 中,因为 OP 没有回应,所以我研究了可能对他们更有吸引力的不同解决方案。它非常流畅。
    猜你喜欢
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 2023-03-06
    • 2013-03-13
    相关资源
    最近更新 更多