2

我有這個帶有的白色矩形方塊的示例圖像,其中有一個黑色方塊。 (2個藍色箭頭只是用於說明目的,它們不是圖像的一部分)Python找到JPEG圖像上的黑色方塊的座標

enter image description here

反正有沒有找出多少像素是黑方遠離圖像的左側和頂部邊界?

如果可能的話,我不喜歡使用OpenCV作爲處理的其餘部分PIL中完成,它可能是矯枉過正,如果我不得不使用OpenCV只是做這個操作。

供參考:圖像是JPEG格式,盒子裏總是隻有1個黑方塊(沒有多個方塊)。

UPDATE

基於由karlphillip答案,我都拿出了這段代碼。

from PIL import Image 

img = Image.open('test.png').convert('1') 
pixels = img.load() 

xlist = [] 
ylist = [] 
for y in xrange(img.size[1]): 
    for x in xrange(img.size[0]): 
     if pixels[x, y] == 0: 
      xlist.append(x) 
      ylist.append(y) 

#4 corners of the black square 
xleft = min(xlist) 
xright = max(xlist) 
ytop = min(ylist) 
ybot = max(ylist) 
+0

是的,這是可能的。您可能會發現[此線程有價值](http://stackoverflow.com/q/1109422/176769)。 – karlphillip

+0

@karlphillip謹慎詳細一點?我以爲'getdata()'只會給我一個圖像內容的像素序列。但是,仍然,我如何從列表中獲取我想要的座標? –

回答

1

基於that link我提到的,我能夠整理出以下僞代碼:

from PIL import Image 

img = Image.open('test.png') 
pixels = img.load() 

for y in xrange(img.size[1]): 
    for x in xrange(img.size[0]): 
     if pixels[x, y] == (0, 0, 0): 
      // black pixel found, add it to a counter variable or something. 

這個答案演示如何訪問和使用PIL圖像中的測試每個像素。

相關問題