web-dev-qa-db-fra.com

convertir une image de CV_64F en CV_8U

Je souhaite convertir une image de type CV_64FC1 en CV_8UC1 en Python à l'aide d'OpenCV.

En C++, à l'aide de la fonction convertTo, nous pouvons facilement convertir le type d'image à l'aide du fragment de code suivant:

image.convertTo(image, CV_8UC1);

J'ai cherché sur Internet mais je suis incapable de trouver une solution sans erreurs. Une fonction dans Python OpenCV pour convertir cela?

5
Jazz

Vous pouvez le convertir en tableau Numpy.

import numpy as np

# Convert source image to unsigned 8 bit integer Numpy array
arr = np.uint8(image)

# Width and height
h, w = arr.shape

Il semble que les API OpenCV Python acceptent également les tableaux Numpy. Je ne l'ai pas testé cependant. S'il vous plaît testez-le et laissez-moi savoir le résultat.

10
Hi I'm Frogatto

J'ai rencontré un problème similaire et lorsque j'essayais de convertir l'image 64F en CV_U8, je me retrouvais avec un écran noir.

Ce link vous aidera à comprendre les types de données et la conversion. Voici le code qui a fonctionné pour moi.

from skimage import img_as_ubyte
cv_image = img_as_ubyte(any_skimage_image)
1
Prathap Narayanappa