Tirar screenshot com OpenCV

Tive duas ideias essa noite, quando deitei para dormir (parece a melhor hora para o cérebro lutar contra o descanso). Para executar essas ideias que, acredito fortemente, será uma diversão e tanto, precisamos primeiramente ter o conceito dessa etapa, que é tirar um screenshot com OpenCV.

A primeira ideia é relacionada à proteção de crianças no computador, a segunda é uma brincadeira, mas não revelarei os detalhes agora.

Criando um VirtualEnv

Comecemos criando um ambiente virtual para desenvolvimento. O Virtualenv é uma maneira de manter o sistema integro. Se depois de desenvolver seus testes quiser excluir o conteúdo para não deixar resquícios no sistema, a melhor opção é utilizar Virtualenv e posteriormente excluir o diretório.

Basicamente, acessamos com activate e desabilitamos com deactivate. O processo de instalação e criação do ambiente virtual está descrito nesse outro artigo.

Instalação de pacotes

Alguns pacotes precisam ser instalados no sistema, mas só alguns. O restante será instalado no virtualenv e em seguida poderemos tirar screenshot com OpenCV usando algumas poucas linhas de código.

Instalação de pacotes no sistema

Comece instalando os pacotes de sistema:

sudo apt-get install scrot
sudo apt-get install python-tk python-dev
sudo apt-get install python3-tk python3-dev

E em seguida, acesse ou crie o virtualenv.

virtualenv teste
source teste/bin/activate

Agora a última etapa antes do código para tirar screenshot com OpenCV.

Instalação de pacotes no virtualenv

Com o comando anterior, deve aparecer (teste) do lado esquerdo da PS1 do terminal do Linux. Após isso, instalamos os demais pacotes usando o programa pip que está instalado no virtualenv.

cd teste
pip install pillow imutils
pip install python3_xlib python-xlib
pip install pyautogui
pip install numpy
pip install cv2-tools cv2-utils
pip install opencv-utils  opencv-python

Código para tirar screenshot com OpenCV

Agora vamos ao código para tirar screenshot com OpenCV. É realmente básico e sem muito propósito, se usado sem outra função, mas nos próximos artigos relacionados deve começar a ficar mais claro o objetivo.

import numpy as np
import pyautogui
import imutils
import cv2

image = pyautogui.screenshot()
image = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
cv2.imwrite("screenshot.png", image)

Após, basta executar o script com python shot.py (shot.py é o nome que eu dei ao script). Será criada uma imagem chamada screenshot.png. Para abri-la, digite no console xdg-open screenshot.png.

tirar screenshot com opencv

Esse processo deve ir muito bem com uma Rasperry. Se precisar de uma, dê uma conferida na Raspberry Pi 3B na CurtoCircuito ou a Raspberry Pi 3B+ na Saravati, dependendo do que quer. Se pretendo um up, então pode ir para a Raspberry Pi 4, do nosso parceiro MASUGUX.

Simples e rápido, tirando shot dos dois displays; com isso, reduzimos o conteúdo para o próximo artigo relacionado.

Espero que acompanhe!

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.