I. Introdução
Quando navegamos no WeChat Moments ou em outras plataformas sociais, geralmente encontramos alguns vídeos ou fotos interessantes, mas há marcas d'água odiosas nesses conteúdos. Essas marcas d'água não apenas afetam nossa percepção, mas também diminuem nossa imagem nas redes sociais. Portanto, o miniaplicativo de remoção de marca d'água do WeChat surgiu. Permite remover facilmente marcas d'água de fotos e vídeos.
2. Realização da função
1. Baixe a imagem ou vídeo com marca d'água
Primeiro, precisamos obter as fotos ou vídeos que precisam ser marcados com marca d'água do WeChat ou de outras mídias sociais. Isso pode ser obtido por meio de alguma biblioteca ou API de terceiros. Por exemplo:
```python
pedidos de importação
de bs4 import BeautifulSoup
def get_video(url):
cabeçalhos = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/58.0.3029.110 Safari/537.3'}
html = request.get(url, headers=headers).text
sopa = BeautifulSoup(html, 'lxml')
video_url = soup.find(id='video').get('src')
retornar video_url
def download_file(url, file_path=Nenhum):
cabeçalhos = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/58.0.3029.110 Safari/537.3'}
resposta = request.get(url, headers=headers, stream=True)
se não file_path:
file_path = url.split('/')[-1]
com open(file_path, 'wb') como f:
para trecho em response.iter_content(1024):
f.escrever(pedaço)
retornar file_path
```
O código acima demonstra como obter o arquivo de vídeo do URL do vídeo e como baixar o arquivo. Isso pode ser obtido analisando o código HTML bruto.
2. Remova a marca d'água
Depois de baixar a imagem ou vídeo correspondente, podemos usar a biblioteca OpenCV para remover a marca d'água. Aqui está um exemplo simples:
```python
importar cv2
def remove_watermark(image_path, output_path):
img = cv2.imread(image_path)
cinza = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
borrado = cv2.GaussianBlur(cinza, (11, 11), 0)
afiado = cv2.Canny(desfocado, 30, 150)
contornos = cv2.findContours(edged, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contornos = contornos[0] if len(contornos) == 2 senão contornos[1]
cv2.drawContours(img, contornos, -1, (255, 255, 255), -1)
cv2.imwrite(output_path, img)
```
Este código demonstra como usar técnicas de detecção de borda e extração de contorno para identificar e remover marcas d'água de imagens. Observe que esse algoritmo não é exaustivo e pode não ser capaz de remover todos os tipos de marcas d'água.
Para vídeo, precisamos fazer isso lendo cada quadro do vídeo quadro a quadro. Podemos usar a biblioteca MoviePy para obter essa funcionalidade.
```python
importar moviepy.editor como mp
def remove_watermark(video_path, output_path):
video = mp.VideoFileClip(video_path)
no_watermark = video.fl_image(remove_watermark_frame)
no_watermark.write_videofile(output_path)
def remove_watermark_frame(quadro):
# Código para remover marca d'água de quadro único
quadro de retorno
```
A primeira parte do código define uma função de desaguamento natural e a segunda parte do código usa a biblioteca MoviePy para processamento quadro a quadro. Cada quadro é passado para a função remove_watermark_frame, que usa técnicas semelhantes à marca d'água de imagem para remover a marca d'água em cada quadro.
3. Gere fotos ou vídeos compartilhados