{"id":598,"date":"2014-09-29T14:41:14","date_gmt":"2014-09-29T17:41:14","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/?p=598"},"modified":"2014-10-01T10:08:44","modified_gmt":"2014-10-01T13:08:44","slug":"opencv-python-desenhar-formas-geometricas","status":"publish","type":"post","link":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/","title":{"rendered":"B\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas"},"content":{"rendered":"<p style=\"text-align: center;\"><strong><span style=\"color: #ff6600;\">Esse tutorial pode estar desatualizado. Encontre a vers\u00e3o revisada em meu blog dedicado ao tema <a style=\"color: #ff6600;\" href=\"http:\/\/www.galirows.com.br\/meublog\/opencv-python\/capitulo1-basico\/desenhar-formas-geometricas\/\" target=\"_blank\">clicando aqui<\/a>.<\/span><\/strong><\/p>\n<p>As formas geom\u00e9tricas b\u00e1sicas que poder\u00e3o ser desenhadas utilizando a OpenCV s\u00e3o a linha, o ret\u00e2ngulo e o c\u00edrculo. O princ\u00edpio b\u00e1sico de aplica\u00e7\u00e3o \u00e9 o mesmo, indicando a forma, a posi\u00e7\u00e3o, a cor e a espessura do tra\u00e7o.<\/p>\n<p>Nesse tutorial, al\u00e9m da OpenCV tamb\u00e9m \u00e9 utilizada a biblioteca Numpy para a manipula\u00e7\u00e3o inicial da imagem. A biblioteca Numpy pode ser instalada com instru\u00e7\u00f5es a partir do <a title=\"Link para o website do Numpy\" href=\"http:\/\/www.numpy.org\" target=\"_blank\">website do projeto<\/a>.<\/p>\n<h4>Criando o fundo da imagem<\/h4>\n<p>A aplica\u00e7\u00e3o das formas pode ser feita em uma imagem carregada ou capturada de um v\u00eddeo ou webcam, mas nesse tutorial criaremos uma imagem em branco e adicionaremos as formas nessa imagem. Criar a imagem em branco significar\u00e1 criar uma matriz colocando cada pixel da matriz com todas as cores. Para facilitar essa manipula\u00e7\u00e3o inicial de matriz, ser\u00e1 utilizada a biblioteca Numpy, sendo necess\u00e1rio que ela esteja instalada junto ao Python.<\/p>\n<p>Atrav\u00e9s da instru\u00e7\u00e3o da linha 4, \u00e9 solicitado ao Numpy que crie uma matriz\u00a0tridimensional, tendo 300 linhas, 400 colunas e a terceira dimens\u00e3o para manter os 3 canais para as cores RGB. O m\u00e9todo <em>ones()<\/em>\u00a0da Numpy cria uma matriz toda preenchida com o n\u00famero 1, sendo ent\u00e3o necess\u00e1rio multiplicar os valores dessa matriz por 255 para obter a cor branca. A linha 5 mostra a imagem em uma janela e na linha 6 \u00e9 esperado alguma tecla ser pressionada para os passos seguintes.<\/p>\n<pre class=\"lang:python decode:true\">import cv2\r\nimport numpy as np   \r\n    \r\ncanvas = np.ones((300, 400, 3)) * 255 #imagem 400x300, com fundo branco e 3 canais para as cores\r\ncv2.imshow(\"Canvas\", canvas)\r\ncv2.waitKey(0)<\/pre>\n<p>&nbsp;<\/p>\n<h4>Desenhando linhas<\/h4>\n<p>Uma linha \u00e9 desenhada atrav\u00e9s do m\u00e9todo <em>line()<\/em> da OpenCV (linha 9). Esse m\u00e9todo espera como primeiro par\u00e2metro em qual imagem ser\u00e1 desenhada a linha. O segundo par\u00e2metro \u00e9 a coordenada onde a linha ser\u00e1 iniciada, enquanto o terceiro par\u00e2metro \u00e9 a coordenada onde a linha finalizar\u00e1.\u00a0Ser\u00e1 tra\u00e7ada uma linha reta entre a coordenada inicial e final. O quarto par\u00e2metro \u00e9 a especifica\u00e7\u00e3o de uma cor para a linha. No c\u00f3digo mostrado abaixo, a cor foi definida em uma vari\u00e1vel para ser possivelmente reaproveitada (embora n\u00e3o tenha sido no c\u00f3digo). Observe que as coordenadas e a cor s\u00e3o <em>arrays<\/em>.<\/p>\n<p>As linhas 10 e 11 s\u00e3o respons\u00e1veis apenas por exibir a imagem na janela aberta anteriormente e esperar ser pressionada alguma tecla. Observe que a janela anterior e a solicitada na linha 10 possuem o mesmo nome e por isso a imagem ser\u00e1 apenas atualizada na janela. Se nomes diferentes fossem utilizados, uma nova janela seria criada.<\/p>\n<p>A primeira linha especificada corta a imagem na diagonal, saindo do canto superior esquerdo (coordenada 0, 0) e indo at\u00e9 o canto inferior direito (coordenada 300, 400 do plano cartesiano &#8211; coordenada 400, 300 da OpenCV).<\/p>\n<p>Na linha 15 \u00e9 criada uma outra linha, sendo essa uma linha que cortar\u00e1 a imagem ao meio e na horizontal. O m\u00e9todo line() nessa instru\u00e7\u00e3o recebeu um par\u00e2metro adicional que \u00e9 o n\u00famero de pixels para a espessura da linha. O padr\u00e3o \u00e9 fazer a forma com 1 pixel\u00a0e\u00a0sendo assim, a segunda linha ser\u00e1 mais espessa do que a primeira. A segunda linha tamb\u00e9m recebeu a cor verde, definida atrav\u00e9s da linha 14.<\/p>\n<pre class=\"start-line:7 lang:python decode:true\">#desenha a linha diagonal    \r\nazul = (255, 0, 0)\r\ncv2.line(canvas, (0, 0), (400, 300), azul)\r\ncv2.imshow(\"Canvas\", canvas)\r\ncv2.waitKey(0)\r\n\r\n#desenha a linha vertical\r\nverde = (0, 255, 0)\r\ncv2.line(canvas, (200, 0), (200, 300), verde, 3)\r\ncv2.imshow(\"Canvas\", canvas)\r\ncv2.waitKey(0)<\/pre>\n<h4>Desenhando ret\u00e2ngulos<\/h4>\n<p>O m\u00e9todo <em>rectangle()<\/em> da OpenCV \u00e9 respons\u00e1vel por desenhar um ret\u00e2ngulo e seus par\u00e2metros s\u00e3o similares ao do m\u00e9todo <em>line()<\/em>, sendo necess\u00e1rio informar a imagem que receber\u00e1 a forma, as coordenadas inicial e final, uma cor e possibilidade de um valor para a espessura da linha (que ser\u00e1 o\u00a0contorno do ret\u00e2ngulo). Um ret\u00e2ngulo ser\u00e1 formado entre as coordenadas inicial e final. A linha 19 \u00e9 a instru\u00e7\u00e3o respons\u00e1vel por desenhar o ret\u00e2ngulo verde visto na figura ao final do tutorial.<\/p>\n<p>Observe que na linha 25 foi informado o valor -1 como valor da espessura da imagem. Esse valor negativo\u00a0gerar\u00e1 um ret\u00e2ngulo preenchido e n\u00e3o apenas contornado. A instru\u00e7\u00e3o dessa linha \u00e9 a respons\u00e1vel por gerar o ret\u00e2ngulo vermelho da figura.<\/p>\n<pre class=\"start-line:18 lang:python decode:true\">#desenha o ret\u00e2ngulo com borda verde    \r\ncv2.rectangle(canvas, (10, 70), (90, 190), verde)\r\ncv2.imshow(\"Canvas\", canvas)\r\ncv2.waitKey(0)\r\n\r\n#desenha o ret\u00e2ngulo todo vermelho\r\nvermelho = (0, 0, 255)\r\ncv2.rectangle(canvas, (250, 50), (300, 125), vermelho, -1)\r\ncv2.imshow(\"Canvas\", canvas)\r\ncv2.waitKey(0)<\/pre>\n<h4>Desenhando c\u00edrculos<\/h4>\n<p>Por fim \u00e9 mostrado como desenhar um c\u00edrculo na imagem. O m\u00e9todo circle() \u00e9 o m\u00e9todo da OpenCV encarregado dessa tarefa. Esse m\u00e9todo espera como primeiro par\u00e2metro a imagem que receber\u00e1 a forma e como segundo par\u00e2metro uma coordenada, que ser\u00e1 o centro do c\u00edrculo. O terceiro par\u00e2metro \u00e9 o di\u00e2metro que o c\u00edrculo dever\u00e1 ter. O quarto par\u00e2metro a ser informado \u00e9 a cor, podendo tamb\u00e9m receber um quinto par\u00e2metro com a espessura da linha, ou o valor -1 para formar um c\u00edrculo todo preenchido. A linha 30\u00a0do c\u00f3digo \u00e9 a respons\u00e1vel por desenhar o c\u00edrculo visto na figura a seguir.<\/p>\n<pre class=\"start-line:28 lang:python decode:true\">#desenha o c\u00edrculo    \r\npreto = (0, 0, 0)\r\ncv2.circle(canvas, (130, 230), 50, preto)\r\ncv2.imshow(\"Canvas\", canvas)\r\ncv2.waitKey(0)<\/pre>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.galirows.com.br\/meublog\/wp-content\/uploads\/2014\/09\/canvas.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-599 aligncenter\" src=\"http:\/\/www.galirows.com.br\/meublog\/wp-content\/uploads\/2014\/09\/canvas.png\" alt=\"canvas\" width=\"399\" height=\"299\" srcset=\"https:\/\/www.galirows.com.br\/meublog\/wp-content\/uploads\/2014\/09\/canvas.png 399w, https:\/\/www.galirows.com.br\/meublog\/wp-content\/uploads\/2014\/09\/canvas-150x112.png 150w, https:\/\/www.galirows.com.br\/meublog\/wp-content\/uploads\/2014\/09\/canvas-300x224.png 300w\" sizes=\"auto, (max-width: 399px) 100vw, 399px\" \/><\/a><strong>Figura gerada<\/strong><\/p>\n<p style=\"text-align: left;\">Veja que como foi utilizada a instru\u00e7\u00e3o <em>cv2.waitKey()<\/em> ao final de cada forma desenhada, a cada tecla pressionada ser\u00e1 mostrado a adi\u00e7\u00e3o de um novo elemento gr\u00e1fico definido.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esse tutorial pode estar desatualizado. Encontre a vers\u00e3o revisada em meu blog dedicado ao tema clicando aqui. As formas geom\u00e9tricas b\u00e1sicas que poder\u00e3o ser desenhadas utilizando a OpenCV s\u00e3o a linha, o ret\u00e2ngulo e o c\u00edrculo. O princ\u00edpio b\u00e1sico de aplica\u00e7\u00e3o \u00e9 o mesmo, indicando a forma, a posi\u00e7\u00e3o, a cor e a espessura do [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":616,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[19],"tags":[21,20],"class_list":["post-598","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-visao-computacional","tag-opencv","tag-python"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Esse tutorial pode estar desatualizado. Encontre a vers\u00e3o revisada em meu blog dedicado ao tema clicando aqui. As formas geom\u00e9tricas b\u00e1sicas que poder\u00e3o ser desenhadas utilizando a OpenCV s\u00e3o a linha, o ret\u00e2ngulo e o c\u00edrculo. O princ\u00edpio b\u00e1sico de aplica\u00e7\u00e3o \u00e9 o mesmo, indicando a forma, a posi\u00e7\u00e3o, a cor e a espessura do\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Benjamin Grando Moreira\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/\" \/>\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=\"Professor Benjamin - Blog com material das minhas disciplinas\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"B\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas - Professor Benjamin\" \/>\n\t\t<meta property=\"og:description\" content=\"Esse tutorial pode estar desatualizado. Encontre a vers\u00e3o revisada em meu blog dedicado ao tema clicando aqui. As formas geom\u00e9tricas b\u00e1sicas que poder\u00e3o ser desenhadas utilizando a OpenCV s\u00e3o a linha, o ret\u00e2ngulo e o c\u00edrculo. O princ\u00edpio b\u00e1sico de aplica\u00e7\u00e3o \u00e9 o mesmo, indicando a forma, a posi\u00e7\u00e3o, a cor e a espessura do\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2014-09-29T17:41:14+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2014-10-01T13:08:44+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"B\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas - Professor Benjamin\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Esse tutorial pode estar desatualizado. Encontre a vers\u00e3o revisada em meu blog dedicado ao tema clicando aqui. As formas geom\u00e9tricas b\u00e1sicas que poder\u00e3o ser desenhadas utilizando a OpenCV s\u00e3o a linha, o ret\u00e2ngulo e o c\u00edrculo. O princ\u00edpio b\u00e1sico de aplica\u00e7\u00e3o \u00e9 o mesmo, indicando a forma, a posi\u00e7\u00e3o, a cor e a espessura do\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/opencv-python-desenhar-formas-geometricas\\\/#blogposting\",\"name\":\"B\\u00e1sico do OpenCV com Python \\u2013 desenhar formas geom\\u00e9tricas - Professor Benjamin\",\"headline\":\"B\\u00e1sico do OpenCV com Python \\u2013 desenhar formas geom\\u00e9tricas\",\"author\":{\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/openCV-Python-LOGO.png\",\"width\":316,\"height\":60},\"datePublished\":\"2014-09-29T14:41:14-03:00\",\"dateModified\":\"2014-10-01T10:08:44-03:00\",\"inLanguage\":\"pt-BR\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/opencv-python-desenhar-formas-geometricas\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/opencv-python-desenhar-formas-geometricas\\\/#webpage\"},\"articleSection\":\"Vis\\u00e3o computacional, OpenCV, Python\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/opencv-python-desenhar-formas-geometricas\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/category\\\/visao-computacional\\\/#listItem\",\"name\":\"Vis\\u00e3o computacional\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/category\\\/visao-computacional\\\/#listItem\",\"position\":2,\"name\":\"Vis\\u00e3o computacional\",\"item\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/category\\\/visao-computacional\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/opencv-python-desenhar-formas-geometricas\\\/#listItem\",\"name\":\"B\\u00e1sico do OpenCV com Python \\u2013 desenhar formas geom\\u00e9tricas\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/opencv-python-desenhar-formas-geometricas\\\/#listItem\",\"position\":3,\"name\":\"B\\u00e1sico do OpenCV com Python \\u2013 desenhar formas geom\\u00e9tricas\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/category\\\/visao-computacional\\\/#listItem\",\"name\":\"Vis\\u00e3o computacional\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/#organization\",\"name\":\"Professor Benjamin\",\"description\":\"Blog com material das minhas disciplinas\",\"url\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Benjamin Grando Moreira\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/opencv-python-desenhar-formas-geometricas\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/af961283f376b309b0f923ac364c17ad071f1c11e42a5686b4975ad4d514fe29?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Benjamin Grando Moreira\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/opencv-python-desenhar-formas-geometricas\\\/#webpage\",\"url\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/opencv-python-desenhar-formas-geometricas\\\/\",\"name\":\"B\\u00e1sico do OpenCV com Python \\u2013 desenhar formas geom\\u00e9tricas - Professor Benjamin\",\"description\":\"Esse tutorial pode estar desatualizado. Encontre a vers\\u00e3o revisada em meu blog dedicado ao tema clicando aqui. As formas geom\\u00e9tricas b\\u00e1sicas que poder\\u00e3o ser desenhadas utilizando a OpenCV s\\u00e3o a linha, o ret\\u00e2ngulo e o c\\u00edrculo. O princ\\u00edpio b\\u00e1sico de aplica\\u00e7\\u00e3o \\u00e9 o mesmo, indicando a forma, a posi\\u00e7\\u00e3o, a cor e a espessura do\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/opencv-python-desenhar-formas-geometricas\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/author\\\/admin\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/wp-content\\\/uploads\\\/2014\\\/09\\\/openCV-Python-LOGO.png\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/opencv-python-desenhar-formas-geometricas\\\/#mainImage\",\"width\":316,\"height\":60},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/blog\\\/opencv-python-desenhar-formas-geometricas\\\/#mainImage\"},\"datePublished\":\"2014-09-29T14:41:14-03:00\",\"dateModified\":\"2014-10-01T10:08:44-03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/#website\",\"url\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/\",\"name\":\"Professor Benjamin\",\"description\":\"Blog com material das minhas disciplinas\",\"inLanguage\":\"pt-BR\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.galirows.com.br\\\/meublog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"B\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas - Professor Benjamin","description":"Esse tutorial pode estar desatualizado. Encontre a vers\u00e3o revisada em meu blog dedicado ao tema clicando aqui. As formas geom\u00e9tricas b\u00e1sicas que poder\u00e3o ser desenhadas utilizando a OpenCV s\u00e3o a linha, o ret\u00e2ngulo e o c\u00edrculo. O princ\u00edpio b\u00e1sico de aplica\u00e7\u00e3o \u00e9 o mesmo, indicando a forma, a posi\u00e7\u00e3o, a cor e a espessura do","canonical_url":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/#blogposting","name":"B\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas - Professor Benjamin","headline":"B\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas","author":{"@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/www.galirows.com.br\/meublog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.galirows.com.br\/meublog\/wp-content\/uploads\/2014\/09\/openCV-Python-LOGO.png","width":316,"height":60},"datePublished":"2014-09-29T14:41:14-03:00","dateModified":"2014-10-01T10:08:44-03:00","inLanguage":"pt-BR","mainEntityOfPage":{"@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/#webpage"},"isPartOf":{"@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/#webpage"},"articleSection":"Vis\u00e3o computacional, OpenCV, Python"},{"@type":"BreadcrumbList","@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.galirows.com.br\/meublog#listItem","position":1,"name":"Home","item":"https:\/\/www.galirows.com.br\/meublog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/category\/visao-computacional\/#listItem","name":"Vis\u00e3o computacional"}},{"@type":"ListItem","@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/category\/visao-computacional\/#listItem","position":2,"name":"Vis\u00e3o computacional","item":"https:\/\/www.galirows.com.br\/meublog\/blog\/category\/visao-computacional\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/#listItem","name":"B\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.galirows.com.br\/meublog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/#listItem","position":3,"name":"B\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas","previousItem":{"@type":"ListItem","@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/category\/visao-computacional\/#listItem","name":"Vis\u00e3o computacional"}}]},{"@type":"Organization","@id":"https:\/\/www.galirows.com.br\/meublog\/#organization","name":"Professor Benjamin","description":"Blog com material das minhas disciplinas","url":"https:\/\/www.galirows.com.br\/meublog\/"},{"@type":"Person","@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/author\/admin\/#author","url":"https:\/\/www.galirows.com.br\/meublog\/blog\/author\/admin\/","name":"Benjamin Grando Moreira","image":{"@type":"ImageObject","@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/af961283f376b309b0f923ac364c17ad071f1c11e42a5686b4975ad4d514fe29?s=96&d=mm&r=g","width":96,"height":96,"caption":"Benjamin Grando Moreira"}},{"@type":"WebPage","@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/#webpage","url":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/","name":"B\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas - Professor Benjamin","description":"Esse tutorial pode estar desatualizado. Encontre a vers\u00e3o revisada em meu blog dedicado ao tema clicando aqui. As formas geom\u00e9tricas b\u00e1sicas que poder\u00e3o ser desenhadas utilizando a OpenCV s\u00e3o a linha, o ret\u00e2ngulo e o c\u00edrculo. O princ\u00edpio b\u00e1sico de aplica\u00e7\u00e3o \u00e9 o mesmo, indicando a forma, a posi\u00e7\u00e3o, a cor e a espessura do","inLanguage":"pt-BR","isPartOf":{"@id":"https:\/\/www.galirows.com.br\/meublog\/#website"},"breadcrumb":{"@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/#breadcrumblist"},"author":{"@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/author\/admin\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.galirows.com.br\/meublog\/wp-content\/uploads\/2014\/09\/openCV-Python-LOGO.png","@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/#mainImage","width":316,"height":60},"primaryImageOfPage":{"@id":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/#mainImage"},"datePublished":"2014-09-29T14:41:14-03:00","dateModified":"2014-10-01T10:08:44-03:00"},{"@type":"WebSite","@id":"https:\/\/www.galirows.com.br\/meublog\/#website","url":"https:\/\/www.galirows.com.br\/meublog\/","name":"Professor Benjamin","description":"Blog com material das minhas disciplinas","inLanguage":"pt-BR","publisher":{"@id":"https:\/\/www.galirows.com.br\/meublog\/#organization"}}]},"og:locale":"pt_BR","og:site_name":"Professor Benjamin - Blog com material das minhas disciplinas","og:type":"article","og:title":"B\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas - Professor Benjamin","og:description":"Esse tutorial pode estar desatualizado. Encontre a vers\u00e3o revisada em meu blog dedicado ao tema clicando aqui. As formas geom\u00e9tricas b\u00e1sicas que poder\u00e3o ser desenhadas utilizando a OpenCV s\u00e3o a linha, o ret\u00e2ngulo e o c\u00edrculo. O princ\u00edpio b\u00e1sico de aplica\u00e7\u00e3o \u00e9 o mesmo, indicando a forma, a posi\u00e7\u00e3o, a cor e a espessura do","og:url":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/","article:published_time":"2014-09-29T17:41:14+00:00","article:modified_time":"2014-10-01T13:08:44+00:00","twitter:card":"summary_large_image","twitter:title":"B\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas - Professor Benjamin","twitter:description":"Esse tutorial pode estar desatualizado. Encontre a vers\u00e3o revisada em meu blog dedicado ao tema clicando aqui. As formas geom\u00e9tricas b\u00e1sicas que poder\u00e3o ser desenhadas utilizando a OpenCV s\u00e3o a linha, o ret\u00e2ngulo e o c\u00edrculo. O princ\u00edpio b\u00e1sico de aplica\u00e7\u00e3o \u00e9 o mesmo, indicando a forma, a posi\u00e7\u00e3o, a cor e a espessura do"},"aioseo_meta_data":{"post_id":"598","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-03 04:32:33","updated":"2025-11-03 19:54:23","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.galirows.com.br\/meublog\" 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=\"https:\/\/www.galirows.com.br\/meublog\/blog\/category\/visao-computacional\/\" title=\"Vis\u00e3o computacional\">Vis\u00e3o computacional<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tB\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.galirows.com.br\/meublog"},{"label":"Vis\u00e3o computacional","link":"https:\/\/www.galirows.com.br\/meublog\/blog\/category\/visao-computacional\/"},{"label":"B\u00e1sico do OpenCV com Python \u2013 desenhar formas geom\u00e9tricas","link":"https:\/\/www.galirows.com.br\/meublog\/blog\/opencv-python-desenhar-formas-geometricas\/"}],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/posts\/598","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/comments?post=598"}],"version-history":[{"count":6,"href":"https:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/posts\/598\/revisions"}],"predecessor-version":[{"id":617,"href":"https:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/posts\/598\/revisions\/617"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/media\/616"}],"wp:attachment":[{"href":"https:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/media?parent=598"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/categories?post=598"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/tags?post=598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}