La reconnaissance fonctionne pas Google Vision

Fermé
Lasyvegasy - 4 avril 2018 à 17:16
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 6 avril 2018 à 09:03
Bonjour,

Je suis actuellement entrain de créer une application permettant de résoudre une grille de sudoku par l'intermédiaire de la caméra du smartphone. J'ai donc pour cela créé un programme permettant de récupérer les chiffres inscrits dans chaque cases à l'aide de Google Vision cependant l'application ne détecte rien.. Est ce normal sachant que le code est censé être bon? Pourriez vous m'aider à avancer svp?

btnProcess.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
new Thread(new Runnable() {
public void run() {
final StringBuilder stringBuilder = new StringBuilder();
TextRecognizer textRecognizer=new TextRecognizer.Builder(getApplicationContext()).build();
if(!textRecognizer.isOperational()){
Log.e("Error","Detector not available");
}
else {
int largeur = (bitmap.getWidth()) / 9;
int hauteur = (bitmap.getHeight()) / 9;
Bitmap cellule = null;
for (int y = 0; y< 9; y++) {
for (int x = 0; x < 9; x++) {
if (y == 0) {
cellule = Bitmap.createBitmap(bitmap,x*largeur,0,largeur,hauteur);
}
if (0 < y ) {
cellule = Bitmap.createBitmap(bitmap,x*largeur,y*hauteur,largeur,hauteur);
}
Frame frame = new Frame.Builder().setBitmap(cellule).build();
cellule.recycle();
SparseArray<TextBlock> items = textRecognizer.detect(frame);
if (items.size()==0){
stringBuilder.append("0" + " ");
}
else{
TextBlock item=items.valueAt(0);
stringBuilder.append(item.getValue() + " ");
}

}
stringBuilder.append("\n");
}
}
runOnUiThread(new Runnable() {
public void run() {
txtResult.setText(stringBuilder.toString());
}
});
}
}).start();

};
});
A voir également:

3 réponses

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 894
5 avril 2018 à 11:48
Hello,

Est ce normal sachant que le code est censé être bon? Pourriez vous m'aider à avancer svp?
Il faut toujours se remettre en question ;) Qui te dit que le code est bon? Par exemple, le code suivant n'est pas "propre":
if (y == 0) {
  cellule = Bitmap.createBitmap(bitmap,x*largeur,0,largeur,hauteur);
}
if (0 < y ) {
  cellule = Bitmap.createBitmap(bitmap,x*largeur,y*hauteur,largeur,hauteur);
}

Si tu regardes bien, c'est le même code finalement...

Comment récupères-tu ta bitmap ?
As-tu essayé avec une seule case pour détecter un seul chiffre ?
As-tu essayé de sauver tes cellules intermédiaires pour vérifier ton découpage ?
0
ah oui j'avais pas fait attention merci !
Je recupere le Bitmap grace à
imageView.setImageBitmap(bitmap);
.
Oui justement, mais le détecteur détecte rien..
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 894
5 avril 2018 à 14:06
setImageBitmap() est ce que l'on appelle un setter, c'est-à-dire que tu va remplir le contenu de ton ImageView avec ta Bitmap en paramètre.

Pour récupérer une Bitmap depuis une ImageView, il faut plutôt faire ceci (de mémoire):
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
0
Enfaite je récupère le bitmap comme ca (je me suis trompe de ligne dsl)
final Bitmap bitmap= BitmapFactory.decodeResource(
getApplicationContext().getResources(),
R.drawable.grille );
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 894
5 avril 2018 à 17:27
Désolé, je n'ai pas trop le temps de tester ton app.
Es-tu parti d'un exemple de Google? Si oui, peut-on savoir lequel?
0
Je suis parti d'un exemple sur Youtube : https://www.youtube.com/watch?v=7qw-zl9XGd4
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 3 894
6 avril 2018 à 09:03
Vaut mieux regarder des sources "officielles": https://developers.google.com/vision/android/text-overview
0