Python - OpenCV, cargue una imagen en tonos de gris...

 
Vista:
Imágen de perfil de Alejandro
Val: 11
Ha disminuido su posición en 5 puestos en Python (en relación al último mes)
Gráfica de Python

OpenCV, cargue una imagen en tonos de gris...

Publicado por Alejandro (7 intervenciones) el 17/03/2019 11:32:46
El ejercicio que me esta dando problemas es este

Crear un programa en OpenCV que, dado el nombre de un fichero de imagen a través de la línea de comandos, cargue esa imagen en tonos de gris, ensanche el histograma de dicha imagen, para que el valor más oscuro sea el 0 y el más claro el 255, muestre la imagen resultante por pantalla, y la grabe en otro fichero

No s'e como ensanchar el histograma. Me han dicho que debo recorrer los pixeles de la imagen, pero no s'e como hacerlo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

OpenCV, cargue una imagen en tonos de gris...

Publicado por tincopasan (1082 intervenciones) el 18/03/2019 14:51:55
podrías mostrar que llevas hecho y aclarar un poco a que se refiere "ensanche", no todos usamos los mismos términos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 11
Ha disminuido su posición en 5 puestos en Python (en relación al último mes)
Gráfica de Python

OpenCV, cargue una imagen en tonos de gris...

Publicado por Alejandro (7 intervenciones) el 18/03/2019 16:18:56
si disculpa llevas razón, el código que había echo en principio era éste, pero resulta que me dijo mi profesor que lo que necesitaba era aplicar la fórmula de la normalización estadística: X´ = a + [ ((X-Xmin) * (b-a)) / Xmax-Xmin ] y debía aplicar eso a una imagen, para después obtener el histograma de dicha imagen que debía ser distinto al que se obtenia antes de aplicarle la normalización a la imagen original.

En el código tomé algunas notas que he dejado en forma de comentarios, pues me dijo que el valor de b = 255 y el de a = 0 supuse que era por la escala de colores. Y luego los valores Xmax y Xmin correspondían a el minimo valor de pixel de la imagen y al máximo, lo que sucede es que yo quiero recorrer los pixeles de toda la imagen para obtener esos valores, pero realmente no sé como hacerlo porque no puedo hacer un ciclo y mostrar cada uno de esos valores pues saldría una lista interminable en pantalla.

Este es el código hasta ahora:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import numpy as np
import cv2, sys
from matplotlib import pyplot as plt
 
#Cargar la imagen por linea de comandos en monocromático
 
img = cv2.imread(sys.argv[1],cv2.IMREAD_GRAYSCALE)
cv2.imshow(sys.argv[1],img)
cv2.waitKey(0)
cv2.destroyAllWindows()
 
#Calcular histograma
 
hist = cv2.calcHist([img], [0], None, [256], [0, 256])
 
#for row in hist:
#    for elem in row:
#        print(elem, end=' ')
#    print()
 
plt.plot(hist, color='gray' )
 
plt.xlabel('intensidad de iluminacion')
plt.ylabel('cantidad de pixeles')
plt.show()
 
cv2.destroyAllWindows()
 
equ = cv2.equalizeHist(img)
res = np.hstack((img,equ))
cv2.imwrite('res.png',res)
 
##b = 255 a = 0 ; min es el valor minimo del pixel, tengo que calcular pixel a pixel
##y para el max igual
 
#filas, columnas = img.shape
#print (filas,columnas)
 
#for fi in range(filas):
#	for co in range(columnas):
#		px = img[fi,co]
 
#print (px)
 
img = cv2.equalizeHist(img)
 
cv2.imshow('Histogramas', img)
cv2.waitKey()
 
hist = cv2.calcHist([img], [0], None, [256], [0, 256])
 
plt.plot(hist, color='gray' )
 
plt.xlabel('intensidad de iluminacion')
plt.ylabel('cantidad de pixeles')
plt.show()
 
cv2.destroyAllWindows()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar