Python OpenCV 图像编辑:编辑像素的更快方法

Day*_*lie 1 python opencv image-editing

使用 python(openCV2、tkinter 等)我创建了一个应用程序(一个非常业余的应用程序)来将蓝色像素更改为白色。这些图像是高质量的 jpg 或 PNGS。

过程:搜索图像的每个像素,如果 BGR 的 'b' 值高于 x,则将像素设置为白色(255, 255, 255)。

问题:一次要处理大约150张图片,因此上述过程需要相当长的时间。每次迭代大约需要 9 - 15 秒,具体取决于图像大小(调整图像大小可以加快该过程,但并不理想)。

下面是代码(为了简单起见,删除了 GUI 和异常处理元素):

for filename in listdir(sourcefolder):
        # Read image and set variables 
        frame = imread(sourcefolder+"/"+filename)
        rows = frame.shape[0]
        cols = frame.shape[1]

        # Search pixels. If blue, set to white. 
        for i in range(0,rows):
            for j in range(0,cols):
                if frame.item(i,j,0) > 155:
                    frame.itemset((i,j,0),255)
                    frame.itemset((i,j,1),255)
                    frame.itemset((i,j,2),255)
        imwrite(sourcecopy+"/"+filename, frame)
        #release image from memory 
        del frame     
Run Code Online (Sandbox Code Playgroud)

任何有关提高效率/速度的帮助将不胜感激!

Mar*_*ell 5

从这张图片开始:

在此输入图像描述

然后使用这个:

import cv2
im = cv2.imread('a.png') 

# Make all pixels where Blue > 150 into white
im[im[...,0]>150] = [255,255,255]

# Save result
cv2.imwrite('result.png', im)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 与某些人相比,我们都是业余爱好者 - 主要是要努力不断学习:-) 它在底层使用 Numpy,并且都为我们进行了大量优化。 (2认同)