Jadi saya punya sedikit kode ini
for x in range(x1,x2):
for y in range(y1, y2):
cpixel = pixels[x, y]
if bw:
bw_value = int(round(sum(cpixel) / float(len(cpixel))))
all_pixels.append(bw_value)
title = "Averaged (B&W) Pixel Values"
else:
if lumi:
luma = (0.3 * cpixel[0]) + (0.59 * cpixel[1]) + (0.11 * cpixel[2])
all_pixels.append(luma)
title = "Pixel Luminosity Values"
else:
if round(sum(cpixel)) / float(len(cpixel)) > 100:
all_pixels.append(255)
else:
all_pixels.append(0)
title = "Pixel Binary Transform Values"
diambil dan dimodifikasi sedikit dari sini Mendapatkan daftar nilai piksel dari PIL untuk memberikan daftar nilai piksel (all_pixels) dalam wilayah pembatas (dipilih pengguna).
Saya mencoba mencari cara yang efisien untuk mendeteksi perubahan dalam daftar setelah serangkaian nilai serupa dicatat. Karena daftar tersebut sepertinya mencantumkan nilai piksel dari atas ke bawah dan kiri ke kanan. Dalam skenario dimana saya akan menggunakannya, ia akan memiliki daftar nilai yang serupa hingga mencapai wilayah gambar di mana nilainya kemudian akan mulai beralih bolak-balik hingga nilainya sekali lagi stabil di sekitar nilai baru.
Yang saya minati adalah melacak batas antara keduanya, saya ingin mendeteksi di mana letak batas ini dan apakah bergeser ke kiri atau ke kanan. Saya tidak bisa memikirkan cara lain selain harus memeriksa setiap nilai yang ditambahkan ke all_pixels dan kemudian menelusuri kembali koordinatnya.
Namun hal ini tampaknya agak samar karena meskipun saya menetapkan sejumlah nilai yang berubah-ubah menjadi sama sebelum nilai berikutnya yang berbeda secara signifikan dipandang sebagai perubahan yang signifikan, bukan sekadar outlier, setelah itu nilai-nilai tersebut mulai beralih di antara nilai-nilai yang lama. dan yang baru.
Saya kira idealnya saya perlu membuat semacam garis yang paling sesuai untuk koordinat wilayah/garis batas ini. Saya hanya perlu beberapa ide bagaimana mengatasi masalah ini.