所以,我有不同的图像,我必须在图像上运行,并通过函数中给出的变量颜色找到图片上的第一个最大正方形。 (这意味着如果存在例如具有相同像素量的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))
谢谢你们,我希望你们理解我,对我来说有点难以解释, 如果帖子中有问题,请告诉我:)
答案 0 :(得分:0)
首先你不应该考虑单个像素而是水平线。
为每个y
创建一个连接线列表。如果您找到搜索颜色的像素并且左侧的像素具有相同的颜色,请将找到的像素添加到最后一行。
然后通过y
查找相同开头和结尾的相邻行以构建矩形。