{"id":666,"date":"2014-11-10T14:48:28","date_gmt":"2014-11-10T11:48:28","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/?page_id=666"},"modified":"2015-04-03T17:00:06","modified_gmt":"2015-04-03T14:00:06","slug":"translacao-rotacao","status":"publish","type":"page","link":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/","title":{"rendered":"1.4 &#8211; Transla\u00e7\u00e3o e rota\u00e7\u00e3o de imagem"},"content":{"rendered":"<p>A edi\u00e7\u00e3o b\u00e1sica de uma imagem envolve constantemente o deslocamento da imagem (transla\u00e7\u00e3o), sua rota\u00e7\u00e3o ou redimensionamento. Nesse sentido, esse tutorial mostrar\u00e1 como utilizar esses recursos utilizando a OpenCV.<\/p>\n<p>Para acompanhar esse tutorial, recomendo que seja baixada a imagem a seguir, que \u00e9 a imagem considerada na explica\u00e7\u00e3o.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/openCVPython.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-667 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/openCVPython.png\" alt=\"openCVPython\" width=\"240\" height=\"230\" \/><\/a><strong>Figura 1. Imagem base do tutorial<\/strong><\/p>\n<p><!--more--><\/p>\n<p>O c\u00f3digo para carregar e mostrar a imagem \u00e9 mostrado a seguir. Foi importando o Numpy pois este ser\u00e1 utilizado posteriormente. Tamb\u00e9m \u00e9 poss\u00edvel ver a forma da imagem (240 x 220 e 3 canais). Como da forma da imagem apenas a largura e altura ser\u00e3o necess\u00e1rias, na linha 6 foi capturado apenas esses dados e armazenado nas vari\u00e1veis com o respectivo nome da propriedade (lembrando que na OpenCV, a ordem das propriedades \u00e9 primeiro a altura e depois a largura).<\/p>\n<pre class=\"lang:python decode:true\">import numpy as np\r\nimport cv2\r\n\r\nimagem = cv2.imread(\"openCVPython.png\")\r\nprint imagem.shape\r\naltura, largura = imagem.shape[:2]\r\ncv2.imshow(\"Original\", imagem)\r\n\r\ncv2.waitKey(0)<\/pre>\n<p><strong>Transla\u00e7\u00e3o (deslocamento)<\/strong><\/p>\n<p>A transla\u00e7\u00e3o de uma imagem \u00e9 realizada utilizando o m\u00e9todo da OpenCV chamado <em>warpAffine()<\/em>. Esse m\u00e9todo espera o objeto de imagem que ser\u00e1 transladado (primeiro par\u00e2metro informado na linha 3 do c\u00f3digo abaixo), uma matriz de deslocamento (segundo par\u00e2metro) e as dimens\u00f5es da imagem (terceiro par\u00e2metro sendo passado como um array).<\/p>\n<p>A matrix de deslocamento est\u00e1 sendo estabelecida indicando na primeira linha o deslocamento no eixo &#8220;x&#8221; e na segunda linha o deslocamento a ser aplicado no eixo &#8220;y&#8221;.<\/p>\n<p>Para o deslocamento deve ser fornecida uma matriz com valores de ponto flutuante, com feito na linha 11. As duas primeira colunas n\u00e3o devem ser alteradas, sendo a \u00faltima coluna a de interesse para especificar o deslocamento. O valor na primeira linha \u00e9 o deslocamento no eixo &#8220;x&#8221;, fazendo com que seja deslocado horizontalmente a quantidade de pixels informada. J\u00e1 o valor na segunda linha especifica o deslocamento no eixo &#8220;y&#8221;, fazendo o deslocamento vertical.<\/p>\n<p>Na primeira transla\u00e7\u00e3o do c\u00f3digo abaixo, o deslocamento aplicado foi de 25 pixels para direita. Para deslocar para esquerda \u00e9 preciso fornecer um valor negativo, como feito na segunda transla\u00e7\u00e3o.\u00a0A imagem tamb\u00e9m foi transladada para baixo 50 pixels e um valor negativo faria um deslocamento para cima.<\/p>\n<pre class=\"start-line:10 lang:python decode:true\">#translacao (deslocamento)\r\ndeslocamento = np.float32([[1, 0, 25], [0, 1, 50]])\r\ndeslocado = cv2.warpAffine(imagem, deslocamento, (largura, altura))\r\ncv2.imshow(\"Baixo e direita\", deslocado)\r\n\r\ncv2.waitKey(0)\r\n\r\ndeslocamento = np.float32([[1, 0, -50], [0, 1, -90]])\r\ndeslocado = cv2.warpAffine(imagem, deslocamento, (largura, altura))\r\ncv2.imshow(\"Cima e esquerda\", deslocado)\r\n\r\ncv2.waitKey(0)<\/pre>\n<p>A imagem a seguir (esquerda) ilustra o resultado da aplica\u00e7\u00e3o do primeiro deslocamento da figura, onde a figura foi transladada mais para a direita e para baixo de sua posi\u00e7\u00e3o inicial. Com a aplica\u00e7\u00e3o da segunda matriz de deslocamento, a imagem foi deslocada mais para cima e esquerda (imagem da direita).<\/p>\n<table align=\"center\">\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-668 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/baixo_direita.jpg\" alt=\"baixo_direita\" width=\"240\" height=\"230\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-669 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/cima_esquerda.jpg\" alt=\"cima_esquerda\" width=\"240\" height=\"230\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Figura 2. Imagem\u00a0transladada para direita e para baixo (a) e figura transladada para esquerda e para cima (b)<\/strong><\/p>\n<p>Se na terceira coluna da primeira linha for fornecido o valor zero, apenas um deslocamento vertical ser\u00e1 aplicado a figura, enquanto um valor zero na terceira coluna da segunda linha realizar\u00e1 apenas o deslocamento horizontal.<\/p>\n<p><strong>Rota\u00e7\u00e3o da imagem<br \/>\n<\/strong><\/p>\n<p>A rota\u00e7\u00e3o de imagem exige um pouco mais do que a transla\u00e7\u00e3o, sendo preciso fornecer um ponto de fixa\u00e7\u00e3o para rotacionar a partir desse ponto.<\/p>\n<p>A linha 23 no c\u00f3digo\u00a0mostrado abaixo \u00e9 respons\u00e1vel por definir esse ponto de fixa\u00e7\u00e3o, fixando\u00a0no centro da figura, sendo esse o ponto normalmente utilizado nos rotacionamentos.<\/p>\n<p>Na linha 24 \u00e9\u00a0a defini\u00e7\u00e3o da rota\u00e7\u00e3o que ser\u00e1 aplicada. No c\u00f3digo foi definido o ponto de fixa\u00e7\u00e3o especificado na linha anterior, o \u00e2ngulo de 45 graus e o terceiro par\u00e2metro \u00e9 a escala, que ser\u00e1 mantida com o valor 1 para n\u00e3o alterar o tamanho da imagem.<\/p>\n<p>A seguir, na linha 25, usamos novamente a fun\u00e7\u00e3o warpAffine() da OpenCV que receber\u00e1 como segundo par\u00e2metro o objeto\u00a0com a especifica\u00e7\u00e3o de rota\u00e7\u00e3o e aplicar\u00e1 a rota\u00e7\u00e3o na imagem e que pode ser visualizada na imagem a esquerda da Figura 3.<\/p>\n<pre class=\"start-line:22 lang:python mark:2,3 decode:true\">#rotacao\r\nponto = (largura \/ 2, altura \/ 2) #ponto no centro da figura\r\nrotacao = cv2.getRotationMatrix2D(ponto, 45, 1.0)\r\nrotacionado = cv2.warpAffine(imagem, rotacao, (largura, altura))\r\ncv2.imshow(\"Rotacionado 45 graus\", rotacionado)\r\n\r\ncv2.waitKey(0)\r\n\r\nrotacao = cv2.getRotationMatrix2D(ponto, 120, 1.0)\r\nrotacionado = cv2.warpAffine(imagem, rotacao, (largura, altura))\r\ncv2.imshow(\"Rotacionado 120 graus\", rotacionado)\r\n\r\ncv2.waitKey(0)<\/pre>\n<p>Na linha 30 do c\u00f3digo foi alterado objeto de rota\u00e7\u00e3o aplicando o \u00e2ngulo de 120 graus. O resultado dessa nova rota\u00e7\u00e3o \u00e9 mostrado na imagem da direita da Figura 3.<\/p>\n<table align=\"center\">\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-670 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/rotacao_45graus.jpg\" alt=\"rotacao_45graus\" width=\"240\" height=\"230\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-673 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/rotacao_120graus.jpg\" alt=\"rotacao_120graus\" width=\"240\" height=\"230\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Figura 3. Imagem\u00a0rotacionada 45 graus\u00a0(a) e figura rotacionada 120 graus (b)<\/strong><\/p>\n<p>Para entender melhor como funcionam os \u00e2ngulos para rota\u00e7\u00e3o, veja a Figura 4 abaixo. O \u00e2ngulo zero \u00e9 uma orienta\u00e7\u00e3o que significa para a direita e \u00e9 a rota\u00e7\u00e3o &#8220;padr\u00e3o&#8221; que a imagem se encontra. Se for fornecido um \u00e2ngulo de 180 graus a imagem ser\u00e1 rotacionada no sentido anti-hor\u00e1rio at\u00e9 ficar de cabe\u00e7a para baixo. Como na primeira imagem foi especificado um \u00e2ngulo de 45 graus, isso fez a imagem ficar inclinada para cima.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/250px-Polar_graph_paper.svg_.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-683 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/250px-Polar_graph_paper.svg_.png\" alt=\"250px-Polar_graph_paper.svg\" width=\"250\" height=\"250\" srcset=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/250px-Polar_graph_paper.svg_.png 250w, http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/250px-Polar_graph_paper.svg_-150x150.png 150w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><\/a><strong>Figura 4. \u00c2ngulos nas coordenadas polares<br \/>\nFonte:\u00a0<\/strong>http:\/\/es.wikipedia.org\/wiki\/Coordenadas_polares<\/p>\n<p>O c\u00f3digo a seguir tamb\u00e9m faz uma rota\u00e7\u00e3o da imagem em 45 graus, mas modifica o ponto de fixa\u00e7\u00e3o posicionando-o no cando inferior esquerdo. A Figura mostra a diferen\u00e7a entre o ponto de fixa\u00e7\u00e3o no centro (imagem da esquerda) e seu novo ponto (imagem da direita).<\/p>\n<pre class=\"start-line:35 lang:default decode:true\">ponto = (0, altura)\r\nrotacao = cv2.getRotationMatrix2D(ponto, 45, 1.0)\r\nrotacionado = cv2.warpAffine(imagem, rotacao, (largura, altura))\r\ncv2.imshow(\"45 graus com ponto embaixo\", rotacionado)\r\n\r\ncv2.waitKey(0)<\/pre>\n<table align=\"center\">\n<tbody>\n<tr>\n<td><a href=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/rotacao_45graus.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-670 size-full aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/rotacao_45graus.jpg\" alt=\"\" width=\"240\" height=\"230\" \/><\/a><\/td>\n<td><a href=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/rotacao_45graus_baixo.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-671 size-full aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/rotacao_45graus_baixo.jpg\" alt=\"\" width=\"240\" height=\"230\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Figura 5.\u00a0<strong>Figura rotacionada 45 graus a partir do seu centro (a) <\/strong>e figura rotacionada 45 graus a partir de seu ponto inferior esquerdo\u00a0(b)<\/strong><\/p>\n<p>Para completar, voltamos o ponto para o centro da imagem e dessa vez alteramos o terceiro par\u00e2metro informado para o m\u00e9todo getRotationMatrix2D(). O valor informado foi 0.5 que significa que a imagem ficar\u00e1 com metade do tamanho que tinha antes. Essa propor\u00e7\u00e3o pode ser reduzida (como foi feito) ou aumentada. Um valor 1.5 aumentaria o tamanho da imagem em 50%, enquanto um valor 2 faria a imagem ficar com o dobro do seu tamanho. A Figura 6 mostra o resultado dessa nova especifica\u00e7\u00e3o.<\/p>\n<pre class=\"start-line:41 lang:default decode:true\">ponto = (largura \/ 2, altura \/ 2) #o ponto esta no centro\r\nrotacao = cv2.getRotationMatrix2D(ponto, 45, 0.5)\r\nrotacionado = cv2.warpAffine(imagem, rotacao, (largura, altura))\r\ncv2.imshow(\"45 graus redimensionado\", rotacionado)\r\n\r\ncv2.waitKey(0)<\/pre>\n<table align=\"center\">\n<tbody>\n<tr>\n<td><a href=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/rotacao_45graus_redimencionado.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-672 size-full aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/10\/rotacao_45graus_redimencionado.jpg\" alt=\"\" width=\"240\" height=\"230\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Figura 6. Figura rotacionada 45 graus e redimensionada para metade do tamanho<br \/>\n<\/strong><\/p>\n<p>Em diversos momentos existe a necessidade de inverter a imagem, fazendo um efeito de espelhamento. Se for aplicado um \u00e2ngulo de 180 graus isso inverter\u00e1 a imagem, mas tamb\u00e9m deixar\u00e1 a imagem de cabe\u00e7a para baixo. O espelhamento de uma imagem requer o uso de uma fun\u00e7\u00e3o espec\u00edfica na OpenCV, sendo essa a fun\u00e7\u00e3o flip().<\/p>\n<p>O c\u00f3digo a seguir realiza o espelhamento da imagem. Veja que a fun\u00e7\u00e3o pede como par\u00e2metros apenas a imagem carregada e um valor. Se o valor 1 \u00e9 informado, a imagem ser\u00e1 invertida no sentido vertical (efeito de espelhamento), enquanto o valor -1 faz com que a invers\u00e3o seja horizontal.<\/p>\n<pre class=\"lang:python decode:true\">inverter = cv2.flip(imagem, 1)\r\ncv2.imshow(\"Espelhado horizontalmente\", inverter)\r\n\r\ncv2.waitKey(0)<\/pre>\n<p>A imagem a esquerda da Figura 7 mostra o resultado do c\u00f3digo acima, onde a imagem foi espelhada horizontalmente j\u00e1 que o valor 1 foi informado como par\u00e2metro. A imagem a direita da figura \u00e9 o resultado da aplica\u00e7\u00e3o do valor zero como segundo par\u00e2metro e onde se observa o espelhamento na vertical.<\/p>\n<table align=\"center\">\n<tbody>\n<tr>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-668 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/11\/fliped_hor.png\" alt=\"baixo_direita\" width=\"240\" height=\"230\" \/><\/td>\n<td><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-669 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-content\/uploads\/sites\/7\/2014\/11\/fliped_ver.png\" alt=\"cima_esquerda\" width=\"240\" height=\"230\" \/><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Figura 7. Figura\u00a0girada horizontalmente\u00a0(a) e figura girada verticalmente\u00a0(b)<\/strong><\/p>\n<p>O espelhamento na horizontal \u00e9 muito utilizado, principalmente na captura de imagens da webcam pois essa pode estar configurada para capturar as imagens espelhadas e \u00e9 preciso inverte-las para ter o resultado original.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A edi\u00e7\u00e3o b\u00e1sica de uma imagem envolve constantemente o deslocamento da imagem (transla\u00e7\u00e3o), sua rota\u00e7\u00e3o ou redimensionamento. Nesse sentido, esse tutorial mostrar\u00e1 como utilizar esses recursos utilizando a OpenCV. Para acompanhar esse tutorial, recomendo que seja baixada a imagem a &hellip; <a href=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/\">Continue lendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":609,"menu_order":4,"comment_status":"closed","ping_status":"closed","template":"onecolumn-page.php","meta":{"footnotes":""},"class_list":["post-666","page","type-page","status-publish","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"A edi\u00e7\u00e3o b\u00e1sica de uma imagem envolve constantemente o deslocamento da imagem (transla\u00e7\u00e3o), sua rota\u00e7\u00e3o ou redimensionamento. Nesse sentido, esse tutorial mostrar\u00e1 como utilizar esses recursos utilizando a OpenCV. Para acompanhar esse tutorial, recomendo que seja baixada a imagem a seguir, que \u00e9 a imagem considerada na explica\u00e7\u00e3o. Figura 1. Imagem base do tutorial O\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_BR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"OpenCV utilizando programa\u00e7\u00e3o em Python - Tutoriais da OpenCV utilizando a linguagem de programa\u00e7\u00e3o Python\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"1.4 \u2013 Transla\u00e7\u00e3o e rota\u00e7\u00e3o de imagem - OpenCV utilizando programa\u00e7\u00e3o em Python\" \/>\n\t\t<meta property=\"og:description\" content=\"A edi\u00e7\u00e3o b\u00e1sica de uma imagem envolve constantemente o deslocamento da imagem (transla\u00e7\u00e3o), sua rota\u00e7\u00e3o ou redimensionamento. Nesse sentido, esse tutorial mostrar\u00e1 como utilizar esses recursos utilizando a OpenCV. Para acompanhar esse tutorial, recomendo que seja baixada a imagem a seguir, que \u00e9 a imagem considerada na explica\u00e7\u00e3o. Figura 1. Imagem base do tutorial O\" \/>\n\t\t<meta property=\"og:url\" content=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2014-11-10T11:48:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2015-04-03T14:00:06+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"1.4 \u2013 Transla\u00e7\u00e3o e rota\u00e7\u00e3o de imagem - OpenCV utilizando programa\u00e7\u00e3o em Python\" \/>\n\t\t<meta name=\"twitter:description\" content=\"A edi\u00e7\u00e3o b\u00e1sica de uma imagem envolve constantemente o deslocamento da imagem (transla\u00e7\u00e3o), sua rota\u00e7\u00e3o ou redimensionamento. Nesse sentido, esse tutorial mostrar\u00e1 como utilizar esses recursos utilizando a OpenCV. Para acompanhar esse tutorial, recomendo que seja baixada a imagem a seguir, que \u00e9 a imagem considerada na explica\u00e7\u00e3o. Figura 1. Imagem base do tutorial O\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/capitulo1-basico\\\/translacao-rotacao\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/#listItem\",\"name\":\"OpenCV 2.4 e Python 2.7\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/#listItem\",\"position\":2,\"name\":\"OpenCV 2.4 e Python 2.7\",\"item\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/capitulo1-basico\\\/#listItem\",\"name\":\"Cap\\u00edtulo 1 &#8211; B\\u00e1sico\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/capitulo1-basico\\\/#listItem\",\"position\":3,\"name\":\"Cap\\u00edtulo 1 &#8211; B\\u00e1sico\",\"item\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/capitulo1-basico\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/capitulo1-basico\\\/translacao-rotacao\\\/#listItem\",\"name\":\"1.4 &#8211; Transla\\u00e7\\u00e3o e rota\\u00e7\\u00e3o de imagem\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/#listItem\",\"name\":\"OpenCV 2.4 e Python 2.7\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/capitulo1-basico\\\/translacao-rotacao\\\/#listItem\",\"position\":4,\"name\":\"1.4 &#8211; Transla\\u00e7\\u00e3o e rota\\u00e7\\u00e3o de imagem\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/capitulo1-basico\\\/#listItem\",\"name\":\"Cap\\u00edtulo 1 &#8211; B\\u00e1sico\"}}]},{\"@type\":\"Organization\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/#organization\",\"name\":\"OpenCV utilizando programa\\u00e7\\u00e3o em Python\",\"description\":\"Tutoriais da OpenCV utilizando a linguagem de programa\\u00e7\\u00e3o Python\",\"url\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/\"},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/capitulo1-basico\\\/translacao-rotacao\\\/#webpage\",\"url\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/capitulo1-basico\\\/translacao-rotacao\\\/\",\"name\":\"1.4 \\u2013 Transla\\u00e7\\u00e3o e rota\\u00e7\\u00e3o de imagem - OpenCV utilizando programa\\u00e7\\u00e3o em Python\",\"description\":\"A edi\\u00e7\\u00e3o b\\u00e1sica de uma imagem envolve constantemente o deslocamento da imagem (transla\\u00e7\\u00e3o), sua rota\\u00e7\\u00e3o ou redimensionamento. Nesse sentido, esse tutorial mostrar\\u00e1 como utilizar esses recursos utilizando a OpenCV. Para acompanhar esse tutorial, recomendo que seja baixada a imagem a seguir, que \\u00e9 a imagem considerada na explica\\u00e7\\u00e3o. Figura 1. Imagem base do tutorial O\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/#website\"},\"breadcrumb\":{\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/opencv2-python27\\\/capitulo1-basico\\\/translacao-rotacao\\\/#breadcrumblist\"},\"datePublished\":\"2014-11-10T14:48:28+03:00\",\"dateModified\":\"2015-04-03T17:00:06+03:00\"},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/#website\",\"url\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/\",\"name\":\"OpenCV utilizando programa\\u00e7\\u00e3o em Python\",\"description\":\"Tutoriais da OpenCV utilizando a linguagem de programa\\u00e7\\u00e3o Python\",\"inLanguage\":\"pt-BR\",\"publisher\":{\"@id\":\"http:\\\/\\\/www.galirows.com.br\\\/meublog\\\/opencv-python\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"1.4 \u2013 Transla\u00e7\u00e3o e rota\u00e7\u00e3o de imagem - OpenCV utilizando programa\u00e7\u00e3o em Python","description":"A edi\u00e7\u00e3o b\u00e1sica de uma imagem envolve constantemente o deslocamento da imagem (transla\u00e7\u00e3o), sua rota\u00e7\u00e3o ou redimensionamento. Nesse sentido, esse tutorial mostrar\u00e1 como utilizar esses recursos utilizando a OpenCV. Para acompanhar esse tutorial, recomendo que seja baixada a imagem a seguir, que \u00e9 a imagem considerada na explica\u00e7\u00e3o. Figura 1. Imagem base do tutorial O","canonical_url":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python#listItem","position":1,"name":"Home","item":"http:\/\/www.galirows.com.br\/meublog\/opencv-python","nextItem":{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/#listItem","name":"OpenCV 2.4 e Python 2.7"}},{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/#listItem","position":2,"name":"OpenCV 2.4 e Python 2.7","item":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/","nextItem":{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/#listItem","name":"Cap\u00edtulo 1 &#8211; B\u00e1sico"},"previousItem":{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python#listItem","name":"Home"}},{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/#listItem","position":3,"name":"Cap\u00edtulo 1 &#8211; B\u00e1sico","item":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/","nextItem":{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/#listItem","name":"1.4 &#8211; Transla\u00e7\u00e3o e rota\u00e7\u00e3o de imagem"},"previousItem":{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/#listItem","name":"OpenCV 2.4 e Python 2.7"}},{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/#listItem","position":4,"name":"1.4 &#8211; Transla\u00e7\u00e3o e rota\u00e7\u00e3o de imagem","previousItem":{"@type":"ListItem","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/#listItem","name":"Cap\u00edtulo 1 &#8211; B\u00e1sico"}}]},{"@type":"Organization","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/#organization","name":"OpenCV utilizando programa\u00e7\u00e3o em Python","description":"Tutoriais da OpenCV utilizando a linguagem de programa\u00e7\u00e3o Python","url":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/"},{"@type":"WebPage","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/#webpage","url":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/","name":"1.4 \u2013 Transla\u00e7\u00e3o e rota\u00e7\u00e3o de imagem - OpenCV utilizando programa\u00e7\u00e3o em Python","description":"A edi\u00e7\u00e3o b\u00e1sica de uma imagem envolve constantemente o deslocamento da imagem (transla\u00e7\u00e3o), sua rota\u00e7\u00e3o ou redimensionamento. Nesse sentido, esse tutorial mostrar\u00e1 como utilizar esses recursos utilizando a OpenCV. Para acompanhar esse tutorial, recomendo que seja baixada a imagem a seguir, que \u00e9 a imagem considerada na explica\u00e7\u00e3o. Figura 1. Imagem base do tutorial O","inLanguage":"pt-BR","isPartOf":{"@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/#website"},"breadcrumb":{"@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/#breadcrumblist"},"datePublished":"2014-11-10T14:48:28+03:00","dateModified":"2015-04-03T17:00:06+03:00"},{"@type":"WebSite","@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/#website","url":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/","name":"OpenCV utilizando programa\u00e7\u00e3o em Python","description":"Tutoriais da OpenCV utilizando a linguagem de programa\u00e7\u00e3o Python","inLanguage":"pt-BR","publisher":{"@id":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/#organization"}}]},"og:locale":"pt_BR","og:site_name":"OpenCV utilizando programa\u00e7\u00e3o em Python - Tutoriais da OpenCV utilizando a linguagem de programa\u00e7\u00e3o Python","og:type":"article","og:title":"1.4 \u2013 Transla\u00e7\u00e3o e rota\u00e7\u00e3o de imagem - OpenCV utilizando programa\u00e7\u00e3o em Python","og:description":"A edi\u00e7\u00e3o b\u00e1sica de uma imagem envolve constantemente o deslocamento da imagem (transla\u00e7\u00e3o), sua rota\u00e7\u00e3o ou redimensionamento. Nesse sentido, esse tutorial mostrar\u00e1 como utilizar esses recursos utilizando a OpenCV. Para acompanhar esse tutorial, recomendo que seja baixada a imagem a seguir, que \u00e9 a imagem considerada na explica\u00e7\u00e3o. Figura 1. Imagem base do tutorial O","og:url":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/","article:published_time":"2014-11-10T11:48:28+00:00","article:modified_time":"2015-04-03T14:00:06+00:00","twitter:card":"summary_large_image","twitter:title":"1.4 \u2013 Transla\u00e7\u00e3o e rota\u00e7\u00e3o de imagem - OpenCV utilizando programa\u00e7\u00e3o em Python","twitter:description":"A edi\u00e7\u00e3o b\u00e1sica de uma imagem envolve constantemente o deslocamento da imagem (transla\u00e7\u00e3o), sua rota\u00e7\u00e3o ou redimensionamento. Nesse sentido, esse tutorial mostrar\u00e1 como utilizar esses recursos utilizando a OpenCV. Para acompanhar esse tutorial, recomendo que seja baixada a imagem a seguir, que \u00e9 a imagem considerada na explica\u00e7\u00e3o. Figura 1. Imagem base do tutorial O"},"aioseo_meta_data":[],"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/\" title=\"OpenCV 2.4 e Python 2.7\">OpenCV 2.4 e Python 2.7<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/\" title=\"Cap\u00edtulo 1 \u2013 B\u00e1sico\">Cap\u00edtulo 1 \u2013 B\u00e1sico<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t1.4 \u2013 Transla\u00e7\u00e3o e rota\u00e7\u00e3o de imagem\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"http:\/\/www.galirows.com.br\/meublog\/opencv-python"},{"label":"OpenCV 2.4 e Python 2.7","link":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/"},{"label":"Cap\u00edtulo 1 &#8211; B\u00e1sico","link":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/"},{"label":"1.4 &#8211; Transla\u00e7\u00e3o e rota\u00e7\u00e3o de imagem","link":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/opencv2-python27\/capitulo1-basico\/translacao-rotacao\/"}],"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/pages\/666","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=666"}],"version-history":[{"count":10,"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/pages\/666\/revisions"}],"predecessor-version":[{"id":695,"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/pages\/666\/revisions\/695"}],"up":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/pages\/609"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/wp-json\/wp\/v2\/media?parent=666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}