{"id":657,"date":"2014-10-01T15:00:21","date_gmt":"2014-10-01T12:00:21","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/?page_id=657"},"modified":"2015-04-04T02:26:27","modified_gmt":"2015-04-03T23:26:27","slug":"reconhecimento-objetos","status":"publish","type":"page","link":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo2-deteccao\/reconhecimento-objetos\/","title":{"rendered":"2.3 &#8211; Reconhecimento de objetos com Python e OpenCV"},"content":{"rendered":"<p>No tutorial explicando sobre o reconhecimento de face (<span style=\"color: #ff0000;\">LINKAR AQUI<\/span>) foi explicado sobre o uso do arquivo<span style=\"color: #ff0000;\"> haar cascade<\/span> e como fazer o uso dele para fazer o reconhecimento de um rosto.<\/p>\n<p>Em princ\u00edpio, para detectar qualquer tipo de elemento basta ter o arquivo cascade correspondente e o algoritmo \u00e9 o mesmo, sofrendo apenas ajustes nos par\u00e2metros para melhor desempenho nas identifica\u00e7\u00f5es.<\/p>\n<p>Os arquivos utilizados podem ser baixados <a href=\"http:\/\/galirows.com.br\/arquivos\/eye_face_haarcascade.zip\">aqui<\/a> ou em\u00a0<a href=\"https:\/\/github.com\/Itseez\/opencv\/tree\/master\/data\/haarcascades\">https:\/\/github.com\/Itseez\/opencv\/tree\/master\/data\/haarcascades<\/a>. No segundo link tamb\u00e9m \u00e9 poss\u00edvel encontrar outros\u00a0arquivos cascade para utilizar, podendo fazer a detec\u00e7\u00e3o de\u00a0olhos com \u00f3culos, parte superior e inferior do corpo, corpo inteiro, sorriso, etc.<\/p>\n<p>O c\u00f3digo a seguir estende o mostrado no reconhecimento de face adicionando o reconhecimento dos olhos. Para isso foi criado mais um classificador, tendo um para a face e outro para os olhos.<\/p>\n<p>A\u00a0utiliza\u00e7\u00e3o do m\u00e9todo <em>detectMultiScale()<\/em> e feita com a mesma imagem capturada da webcam, mas com configura\u00e7\u00f5es diferentes, sendo deixado o tamanho m\u00ednimo e m\u00e1ximo para a detec\u00e7\u00e3o dos olhos menor do que a da detec\u00e7\u00e3o da face.<\/p>\n<p>Para a face \u00e9 desenhado um ret\u00e2ngulo verde\u00a0e\u00a0para os olhos s\u00e3o desenhados\u00a0ret\u00e2ngulos na cor azul.<\/p>\n<pre class=\"lang:python decode:true\">import cv2\r\n\r\narqCasc1 = 'haarcascade_frontalface_default.xml'\r\narqCasc2 = 'haarcascade_eye.xml'\r\nfaceCascade1 = cv2.CascadeClassifier(arqCasc1) #classificador para o rosto\r\nfaceCascade2 = cv2.CascadeClassifier(arqCasc2) #classificador para os olhos\r\n\r\nwebcam = cv2.VideoCapture(0)  #instancia o uso da webcam\r\n\r\nwhile True:\r\n    s, imagem = webcam.read() #pega efeticamente a imagem da webcam\r\n    imagem = cv2.flip(imagem,180) #espelha a imagem\r\n\r\n    faces = faceCascade1.detectMultiScale(\r\n        imagem,\r\n        minNeighbors=20,\r\n        minSize=(30, 30),\r\n\tmaxSize=(300,300)\r\n    )\r\n\r\n    olhos = faceCascade2.detectMultiScale(\r\n        imagem,\r\n        minNeighbors=20,\r\n        minSize=(10, 10),\r\n\tmaxSize=(90,90)\r\n    )\r\n\r\n    # Desenha um retangulo nas faces e olhos detectados\r\n    for (x, y, w, h) in faces:\r\n        cv2.rectangle(imagem, (x, y), (x+w, y+h), (0, 255, 0), 4)\r\n\r\n    for (x, y, w, h) in olhos:\r\n        cv2.rectangle(imagem, (x, y), (x+w, y+h), (255, 0, 0), 2)\r\n\r\n    cv2.imshow('Video', imagem) #mostra a imagem captura na janela\r\n\r\n    #o trecho seguinte e apenas para parar o codigo e fechar a janela\r\n    if cv2.waitKey(1) &amp; 0xFF == ord('q'):\r\n        break\r\n\r\nwebcam.release() #dispensa o uso da webcam\r\ncv2.destroyAllWindows() #fecha todas a janelas abertas<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>No tutorial explicando sobre o reconhecimento de face (LINKAR AQUI) foi explicado sobre o uso do arquivo haar cascade e como fazer o uso dele para fazer o reconhecimento de um rosto. Em princ\u00edpio, para detectar qualquer tipo de elemento &hellip; <a href=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo2-deteccao\/reconhecimento-objetos\/\">Continue lendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":652,"menu_order":3,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-657","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/pages\/657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/comments?post=657"}],"version-history":[{"count":3,"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/pages\/657\/revisions"}],"predecessor-version":[{"id":720,"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/pages\/657\/revisions\/720"}],"up":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/pages\/652"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/media?parent=657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}