J'ai utilisé openCV python et j'ai rencontré une erreur.
img_blur = cv2.medianBlur(self.cropped_img,5)
img_thresh_Gaussian = cv2.adaptiveThreshold(img_blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
plt.subplot(1,1,1),plt.imshow(img_thresh_Gaussian, cmap = 'gray')
plt.title("Image"), plt.xticks([]), plt.yticks([])
plt.show()
mais j'ai reçu:
cv2.error: /home/phuong/opencv_src/opencv/modules/imgproc/src/thresh.cpp:1280: error: (-215) src.type() == CV_8UC1 in function adaptiveThreshold
Dois-je installer autre chose?
vous devriez charger votre fichier comme ça
src.create(rows, cols, CV_8UC1);
src = imread(your-file, CV_8UC1);
et après ça
adaptiveThreshold(src, dst, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 75, 10);
Le problème est que vous essayez d'utiliser le seuillage adaptatif pour une image qui n'est pas en niveaux de gris. Et la fonction ne fonctionne qu'avec des images en niveaux de gris.
Vous devez donc convertir votre image au format en niveaux de gris, comme indiqué dans documentation .
Ils lisent l'image au format niveaux de gris avec: img = cv2.imread('dave.jpg',0)
. Vous pouvez également le convertir en niveaux de gris avec: img_grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
vous pouvez changer le code légèrement comme ceci:
img_blur = cv2.medianBlur(self.cropped_img,5).astype('uint8')
img_thresh_Gaussian = cv2.adaptiveThreshold(img_blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
simplement en ajoutant ('uint8') alors que le flou a résolu mon problème.