PDIOpen CVparte 2 C 2
PDIOpen CVparte 2 C 2
PDIOpen CVparte 2 C 2
com Python/OpenCV
parte2
Prof. Stefano
Prof. Stefano
import cv2
# diferença entre soma opencv original
imagem = cv2.imread('imagens/med2.png')
imagem2=imagem
cv2.imshow('Imagem',imagem)
cv2.waitKey(0)
imagem4= cv2.add(imagem,imagem2)
cv2.imshow('Imagem4',imagem4)
cv2.waitKey(0)
cv2.add(A,B)
cv2.destroyAllWindows()
Prof. Stefano
Python
import cv2
imagem =
cv2.imread('imagens/caminhaoP.png')
imagem2=imagem
cv2.imshow('Imagem',imagem)
cv2.waitKey(0)
imagem3 = cv2.imread('imagens/fusca2.png')
cv2.imshow('Imagem3',imagem3)
cv2.waitKey(0)
img = cv2.imread('imagens/caminhao1.jpg')
cv2.imshow('Original', img)
largura = img.shape[1]
altura = img.shape[0]
#precisa calcular a proporcao
proporcao = float(altura/largura)
largura_nova = 320 #em pixels
altura_nova = int(largura_nova*proporcao)
tamanho_novo = (largura_nova, altura_nova)
#cv2.resize(imagem,novo tamanho, algoritmo para
#redimensionar Exercício: Da imagem
# o padrão é interpolação bilinear acima copie somente o
img_redimensionada = cv2.resize(img, carro do lado direito e
tamanho_novo) insira uma cópia com o
cv2.imshow('Resultado', img_redimensionada) dobro do tamanho ao lado
cv2.waitKey(0) do caminhão verde.
cv2.destroyAllWindows()
Prof. Stefano
Python
FLIP VERTICAL - HORIZONTAL
import cv2
img = cv2.imread('imagens/pista1.jpg')
Cv2.flip(imagem, FlipCode)
cv2.imshow("Original", img)
Flipcode:
flip_horizontal = cv2.flip(img, 1)
0 – vertical
cv2.imshow("Flip Horizontal", flip_horizontal)
+1 – horizontal
-1 - rotaciona 180
flip_vertical = cv2.flip(img, 0)
(Vertical+Horizontal)
cv2.imshow("Flip Vertical", flip_vertical)
Prof. Stefano
Python
Prof. Stefano
Python
import cv2
img = cv2.imread('imagens/pista1.jpg')
(alt, lar) = img.shape[:2] #captura altura e largura
centro = (lar // 2, alt // 2) #acha o centro
getRotationMatrix2D
(centro,ângulo,escala)
Escala=4.0 7
Prof. Stefano
Python
from matplotlib import pyplot as plt
import cv2
img = cv2.imread('imagens/pista1.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#converte P&B
cv2.imshow("Imagem P&B", img)
plt.figure()
plt.title("Histograma P&B")
plt.xlabel("Intensidade")
plt.ylabel("Qtde de Pixels")
plt.plot(h)
plt.xlim([0, 256])
plt.show()
cv2.waitKey(0)
cv2.destroyAllWindows()
Prof. Stefano
Python
Images = imagem
Channels = canais. (Tons cinza = [0], colorido=[0],[1] ou [2])
Mask = completa (None) ou por região
histSize =
Prof. Stefano
Python
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('imagens/pista1.jpg')
cv2.imshow("Imagem Colorida", img)
color = ('b','g','r')
for i,col in enumerate(color):
histr = cv2.calcHist([img],[i],None,[256],[0,256])
plt.plot(histr,color = col)
plt.xlim([0,256])
plt.show()
cv2.waitKey(0)
cv2.destroyAllWindows()
10
Prof. Stefano
Python
Exercício:
Elabore um programa em
Python em que o programa
captura uma imagem com a
webcam (arquivo) e depois
de pressionar a tecla ESC
mostra o histograma
colorido e em tons de cinza
da imagem.
11
Prof. Stefano
Python
import cv2
# captura de frame da webcam
teste=True
cap = cv2.VideoCapture(0) Captura a imagem da
while(teste): webcam e mostra na
tela. Sai quando for
__, frame = cap.read() pressionado o ‘ q ’
cv2.imshow('rame', frame)
if cv2.waitKey(1) == ord('q'):
print('ok')
teste=False
12
Prof. Stefano
Python
# Busca por cor
import cv2
import numpy as np
Captura a imagem na
# captura de frame da webcam
teste=True webcam para que ele
cap = cv2.VideoCapture(0) mostre uma cor, no caso
while(teste):
é o azul.
__, frame = cap.read()
hsv =cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
lower_blue=np.array([98,50,50])
upper_blue=np.array([130,255,255]) EXERCÍCIO
mask=cv2.inRange(hsv,lower_blue,upper_blue) Altere o programa para
que ele busque a cor
res=cv2.bitwise_and(frame,frame,mask=mask)
verde, vermelho, amarelo
cv2.imshow('frame', frame) e roxo, uma cor de cada
cv2.imshow('mask', mask) vez
cv2.imshow('res', res)
if cv2.waitKey(1) == ord('q'):
teste=False
Prof. Stefano
Python
Tratamento de eventos com o Mouse
• Os eventos com o mouse são relativos a cada tela aberta, assim, somente quando o
mouse estiver sobre a tela é que eles são considerados;
• Diferentes telas são diferentes eventos, mesmo que com o mesmo mouse;
• Tratam-se os eventos para isso através de uma função específica.
If event == cv2.EVENT_LBUTTONDOWN:
print("Left button of the mouse is clicked - position (", x, ", ",y, ")")
14
Prof. Stefano
import cv2
import numpy as np Python
# Create a black image and a window
windowName = 'MouseCallback'
img = np.zeros((512, 512, 3), np.uint8)
cv2.namedWindow(windowName)
def main():
while (True):
cv2.imshow(windowName, img)
#cv2.waitKey(200)
if cv2.waitKey(20) == 27:
break
cv2.destroyAllWindows()
if __name__ == "__main__": 15
main()
Prof. Stefano
Python
import cv2
import numpy as np Equalização de histograma
from matplotlib import pyplot as plt
cap = cv2.VideoCapture(1)
while teste:
if cv2.waitKey(1) == ord('q'):
teste=False
equ = cv2.equalizeHist(img)
#res = np.hstack((img,equ)) #stacking images side-by-side
hist1 = cv2.calcHist([img],[0],None,[256],[0,256])
hist2 = cv2.calcHist([equ],[0],None,[256],[0,256])
cv2.imshow('equ',equ)
cv2.waitKey(0)
cap.release() #desativa webcam 16
cv2.destroyAllWindows()
Prof. Stefano
Python
17
Prof. Stefano
Python
18
Prof. Stefano
Python
19
Prof. Stefano
Python
Exercícios:
a)Elabore um estudo da aplicação de equalização de histograma utilizando o programa
em python anterior a imagem em diferentes situações (Pelo menos 5. Ex. Estradas,
cidade, interior de casa, linha de produção, etc) e com diferentes condições de tempo
(Ex.: nevoeiro (Londres), penumbra, reflexo do sol intenso, etc). Em cada situação deverá
mostrar a imagem original, com seu histograma e a imagem otimizada com o seu
respectivo histograma. Deverá ser feito uma discussão geral sobre os resultados obtidos
analisando as melhores condições de aplicação, a resposta do algoritmo nas diferentes
situações, que deverá ser comprovado pelo conjunto de imagens selecionadas.
Prof. Stefano
Python
# captura de frame da webcam
teste=True
cap = cv2.VideoCapture(1)
for i in range(6):
plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.show()
cap.release() #desativa webcam
cv2.destroyAllWindows() 21
Prof. Stefano
Python
22
Prof. Stefano
Python
Imagem do computador
23
Prof. Stefano
Python
A mesma imagem anterior adquirida com a webcam de uma folha impressa com
a influência da luz
24
Prof. Stefano
Python
Exercícios:
a) Elabore um programa em python que demostre a utilização da binarização em uma
aplicação prática ( peças em linha de produção, moedas, médica (células), agricultura
(folhas - frutas) )utilizando imagens retiradas da internet(pelo menos 5 diferentes). Para
isso o programa deverá mostrar a imagem original e mostrar o seu histograma e depois
aplicar a binarização em 3 níveis de intensidade diferentes. Deverá ser feito uma
discussão geral sobre os resultados obtidos analisando as melhores condições de
aplicação (níveis selecionados) e a relação com o fundo da imagem.
25
Prof. Stefano
Referências
Prof. Stefano