如何找到图像中的第一大sqaure(没有外部库)

时间:2017-11-20 00:00:42

标签: python image-processing find

所以,我有不同的图像,我必须在图像上运行,并通过函数中给出的变量颜色找到图片上的第一个最大正方形。 (这意味着如果存在例如具有相同像素量的2个正方形,则选择第一个正方形)

这是我必须做的一项使命,但我被困住了,不知道如何得到结果:(

我们使用文件immagini中的函数load。

filename =图像名称

c = RGB代码。

我的代码是:

from immagini import *

def quadrato(filename,c):
#Get image from the user (load image)    
img = load(filename)

#print(img[y][x][r,g,b]) 
#Loop trough the image 
#Get the width and height of the image 

counter = []

for y in range(0, len(img[:])):
    for x in range(0, len(img[y][:])):
        #Scan for the R #Scan for the G #Scan for the B
        #If detecs all RGB are the same from the input
        if img[y][x][0] == c[0] and img[y][x][1] == c[1] and img[y][x][2] == c[2]:
            counter.append((x,y))
print (((len(counter)), (x ,y),img[y][x]))

所以我的代码会打印出请求颜色的像素数,像素的位置和颜色。

例如(sqaure的像素数,(x,y)位置)

The input ('Img1.png',(255,0,0)) , The output must be (30, (60, 50))

The input ('Img2.png',(0,0,255)) , The output must be (201,(54,240))

谢谢你们,我希望你们理解我,对我来说有点难以解释, 如果帖子中有问题,请告诉我:)

1 个答案:

答案 0 :(得分:0)

首先你不应该考虑单个像素而是水平线。

为每个y创建一个连接线列表。如果您找到搜索颜色的像素并且左侧的像素具有相同的颜色,请将找到的像素添加到最后一行。

然后通过y查找相同开头和结尾的相邻行以构建矩形。