Questão de Programação — Linguagens de programação — FUNDATEC 2025
Programação›Linguagens de programação
Código
qg473687
Banca
FUNDATEC
Órgão
IF Sul - MG
Ano
2025
Nível
Superior
Cargo
PEBTT - Informática
Para responder a questão, considere o programa quadro1.py apresentado a seguir,
feito em Python e utilizando OpenCV.
Ao executar o programa, será desenhada na tela uma figura de quatro lados na cor:
ALaranja.
BAmarela.
CVerde.
DAzul.
EVermelha.
Revelar gabarito e comentário▾
GabaritoD — Azul.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
OpenCV: desenhando formas e cores em Python
Gabarito: letra D. O programa quadro1.py, ao executar, desenha uma figura de quatro lados na cor azul. Isso porque a função cv2.rectangle() do OpenCV, utilizada para desenhar retângulos (figuras de quatro lados), recebe como parâmetro de cor uma tupla no formato BGR (Blue, Green, Red), e a tupla (255, 0, 0) representa a cor azul, com o valor máximo (255) no canal azul e zero nos canais verde e vermelho.
O OpenCV é uma biblioteca de visão computacional amplamente utilizada em Python para processamento de imagens e vídeos. Uma de suas funcionalidades mais básicas é o desenho de formas geométricas, como linhas, círculos, retângulos e polígonos, diretamente em uma imagem ou em uma janela criada pela função cv2.imshow(). Para desenhar um retângulo, utiliza-se a função cv2.rectangle(), que recebe como argumentos a imagem de destino, as coordenadas do canto superior esquerdo e do canto inferior direito do retângulo, a cor e, opcionalmente, a espessura da linha.
A cor é um parâmetro crucial e, no OpenCV, ela é sempre representada no espaço de cores BGR (Blue, Green, Red), que é a ordem inversa do espaço RGB (Red, Green, Blue) mais comum em outras bibliotecas. Isso significa que, para definir uma cor, você deve fornecer uma tupla de três valores inteiros entre 0 e 255, onde o primeiro valor corresponde à intensidade do azul, o segundo ao verde e o terceiro ao vermelho. Essa inversão é uma pegadinha clássica para quem está acostumado com o padrão RGB.
No programa quadro1.py, a cor é definida pela tupla (255, 0, 0). Interpretando essa tupla no padrão BGR, temos o valor máximo (255) no canal azul e zero nos canais verde e vermelho. Portanto, a cor resultante é o azul puro. Se a tupla fosse (0, 0, 255), a cor seria vermelha; se fosse (0, 255, 0), seria verde. Essa distinção é fundamental para responder corretamente à questão.
A banca explora exatamente essa confusão entre os padrões de cor BGR e RGB. O candidato que não conhece a particularidade do OpenCV pode interpretar a tupla (255, 0, 0) como vermelho, pois no padrão RGB o valor máximo no primeiro canal corresponde à cor vermelha. No entanto, no OpenCV, o primeiro canal é o azul, o que torna a alternativa D (Azul) a correta. É essencial memorizar essa característica da biblioteca para não cair nessa armadilha.
Guarde a regra: no OpenCV, a ordem dos canais de cor é BGR, e não RGB. Essa é a chave para desvendar a questão e também para evitar erros em outras situações que envolvam manipulação de cores com essa biblioteca.
Cores no OpenCV (padrão BGR): (255, 0, 0) (Canal azul no máximo, Verde e vermelho zerados, Azul); (0, 255, 0) (Canal verde no máximo, Verde); (0, 0, 255) (Canal vermelho no máximo, Vermelho); (0, 255, 255) (Verde + vermelho, Amarelo); (0, 165, 255) (Vermelho + verde, Laranja)
Alternativa A — ❌ Incorreta
A cor laranja não é representada pela tupla (255, 0, 0). No padrão BGR, a cor laranja é uma combinação de vermelho e verde, com valores como (0, 165, 255). A alternativa confunde a representação da cor laranja com a do azul, provavelmente por não conhecer o padrão BGR do OpenCV.
Alternativa B — ❌ Incorreta
A cor amarela, no padrão BGR, é representada pela tupla (0, 255, 255), que combina os canais verde e vermelho. A alternativa erra ao associar a tupla (255, 0, 0) à cor amarela, ignorando a ordem dos canais no OpenCV.
Alternativa C — ❌ Incorreta
A cor verde, no padrão BGR, é representada pela tupla (0, 255, 0). A alternativa erra ao associar a tupla (255, 0, 0) à cor verde, pois o valor máximo está no canal azul, não no verde.
Alternativa D — ✅ Correta ⟵ GABARITO
A tupla (255, 0, 0) no padrão BGR do OpenCV representa a cor azul, pois o valor máximo (255) está no canal azul, e os canais verde e vermelho estão zerados. A função cv2.rectangle() utiliza esse padrão de cores, e a figura de quatro lados desenhada será azul.
Alternativa E — ❌ Incorreta
A cor vermelha, no padrão BGR, é representada pela tupla (0, 0, 255). A alternativa erra ao associar a tupla (255, 0, 0) à cor vermelha, pois inverte a ordem dos canais, confundindo o padrão BGR com o RGB.
NÃO CAIA NESSA!
A banca explora a inversão dos canais de cor entre os padrões RGB e BGR. No OpenCV, a ordem é BGR, então (255, 0, 0) é azul, não vermelho. Lembre-se sempre dessa particularidade para não cair nessa armadilha clássica.