je suis nouveau à opencv et j'utilise opencv3
. J'essaie de détecter les cercles en utilisant hough-transformer. J'ai this code qui lit l'image d'un fichier et détecte des cercles puis écris-la sur un fichier.Cela fonctionne bien.Il est l'original image et voici le detected un.la détection de cercle échoue après convertir l'image tamponnée à Mat
mais je veux détecter les cercles dans une image tamponnée .j'ai utilisé une méthode pour convertir l'image tamponnée en objet mat. Alors ce qui s'est passé est la détection de cercle échouée et l'image a été redimensionnée .la luminosité a trop réduit.Cela est failed one.
est le code ici i utilisé pour convertir l'image tamponnée à tapis (extrait de la réponse stackoverflow)
public Mat bufferedImageToMat(BufferedImage bi) {
byte[] pixels = ((DataBufferByte) bi.getRaster().getDataBuffer()).getData();
Mat mat = new Mat(bi.getWidth(), bi.getHeight(), CvType.CV_8UC3);
mat.put(0, 0, pixels);
return mat;
}
je pense problème est dans la méthode ci-dessus. c'est la ligne de code 47
et 48
.
Mat source = Imgcodecs.imread(circleimage, Imgcodecs.CV_LOAD_IMAGE_COLOR);
//Mat source = bufferedImageToMat(bi);
si j'utilise un 1er (lire directement à partir de l'image) code fonctionne .mais si j'utilise une 2ème détection de cercle échouent.
pouvez-vous voir un problème dans cette méthode? grâce
en syntaxe C++ Le constructeur Mat utilise les paramètres dans un ordre différent: 'Mat (rows, cols, type)', probablement la même chose pour la syntaxe java? S'il vous plaît essayez 'new Mat (bi.getHeight(), bi.getWidth(), CvType.CV_8UC3);' – Micka
@Micka ohh ouais vous avez raison .tnx vous beaucoup.post it comme réponse plz.it fonctionne maintenant –