Saya telah mencoba selama beberapa hari terakhir untuk mendapatkan kotak sudoku dari gambar, dan saya telah berjuang untuk mendapatkan kotak yang lebih kecil dari kotak. Saya sedang mengerjakan gambar di bawah ini. Saya pikir memproses gambar dengan filter cerdik akan bekerja dengan baik, tetapi tidak dan saya tidak bisa mendapatkan setiap kontur dari setiap kotak. Saya kemudian menempatkan ambang adaptif, otsu, dan ambang batas klasik untuk ujian, tetapi setiap kali, sepertinya tidak bisa menangkap setiap kotak kecil.
Tujuan akhirnya adalah untuk mendapatkan sel-sel yang berisi angka, dan mengenali angka-angka dengan pytorch, jadi saya benar-benar ingin memiliki beberapa gambar bersih dari angka-angka tersebut, sehingga pengakuan tidak gagal :)
Adakah yang punya ide tentang cara mencapai ini? Terima kasih banyak sebelumnya! : D
Jawaban:
Inilah solusi potensial:
Dapatkan gambar biner. Konversi gambar ke skala abu-abu dan ambang adaptif
Saring semua nomor dan derau untuk mengisolasi hanya kotak. Kami memfilter menggunakan area kontur untuk menghapus angka karena kami hanya ingin setiap sel
imutils.contours.sort_contours()
dengantop-to-bottom
danleft-to-right
parameterInilah gambar biner awal (kiri) dan nomor yang difilter + garis kisi yang diperbaiki + gambar terbalik (kanan)
Berikut ini visualisasi dari iterasi setiap sel
Angka yang terdeteksi di setiap sel
Kode
Catatan: Gagasan pengurutan diadaptasi dari jawaban sebelumnya yang lama dalam ekstraksi warna pemecah Rubrik cube .
sumber
Jika gambar hanya berisi kisi-kisi sudoku yang dipasangkan dengan ketat, salah satu cara kasar untuk mencapainya adalah dengan membagi gambar menjadi kisi-kisi 9X9 yang sama dan kemudian mencoba mengekstraksi angka di setiap kisi itu.
sumber
Langkah:
Kode:
melengkung:
th3:
warped2:
hasil sudoku:
Semua digit yang diekstraksi:
Referensi:
titik grid
dapatkan fitur (digit)
Sampel gambar
sumber