Une bénédiction devient plus de bénédiction Opération d'image de base de capture d'image réseau Alipay Jifu

Capture et traitement d'images

Aperçu

L'activité annuelle de rassemblement Wufu a recommencé, même si elle ne coûte que quelques dollars à la fin, elle ne peut pas arrêter l'intérêt de tous à rassembler les cinq porte-bonheur. Pour collecter les cinq bénédictions, vous devez utiliser la RA pour numériser des objets avec des personnages de bénédiction. Je me souviens que j'avais l'habitude de télécharger toutes sortes de photos de bénédiction à partir d'Internet pour les numériser, et c'était assez difficile à télécharger, donc cette année j'ai directement exploré les images Baidu avec "福" , "Fuqi", "fu" comme mots-clés dans l'image. Plus tard, j'ai pensé que lorsque j'étudiais les images, il y avait beaucoup d'opérations de traitement d'image de base, et j'ai fait une petite manipulation sur l'image à la main, transformant un personnage de bénédiction en plusieurs caractères de bénédiction. Les coulisses ont répondu "福" pour obtenir plus de 170 photos avec le mot "Fu". La création n'est pas facile, il suffit de cliquer sur "Je regarde".

Capture d'image

La capture d'image n'utilise aucun framework pour capturer, il s'agit de données de demande d'URL très simples, de données d'analyse, de persistance des données. Je n'entrerai pas dans les détails ici. Si vous voulez savoir, vous pouvez voir des dizaines de lignes de code dans mes tweets précédents pour télécharger des fonds d'écran HD par lots.

Le code d'implémentation est le suivant


# -*- coding:utf-8 -*-
import requests
import os
import re
import time
import random

def getManyPages(keyword, pages):
    params = []
    for i in range(30, 30 * pages + 30, 30):
        params.append({
        })
    url = 'https://image.baidu.com/search/acjson'
    urls = []
    for i in params:
        urls.append(requests.get(url, params=i).json().get('data'))
    return urls
def getpage(key, page):
    new_url = []
    for i in range(0, page * 30 + 30, 30):
        new_url.append({
        })
    url = 'https://image.baidu.com/search/acjson'
    result = []
    for i in new_url:
        randnumber1 = random.randint(0, 3)  # 生成随机数
        time.sleep(randnumber1)  # 按随机数延时
        print(i)
        try:
            result.append(requests.get(url, params=i).json().get('data'))
            print(result)
        except:  # 如果延时之后还是被拒绝
            # print('error\n')
            randnumber2 = random.randint(5, 10)  # 延迟随机时间
            time.sleep(randnumber2)
    return result
def getImg(dataList, localPath, keyword):
    i = 1
    x = 0
    for list in dataList:
        for each in list:
            try:
                if each.get('thumbURL') != None:
                    print('downloading:%s' % each.get('thumbURL'))
                    pic = requests.get(each.get('thumbURL'))
            except requests.exceptions.ConnectionError:
                print('error: This photo cannot be downloaded')
                continue
            dir = 'image/' + keyword + '_' + str(i) + '.jpg'
            fp = open(dir, 'wb')
            fp.write(pic.content)
            fp.close()
            i += 1
def dowmloadPic(html, keyword):
    pic_url = re.findall('"objURL":"(.*?)",', html, re.S)
    i = 1
    print('Can not find key word:' + keyword + 'is downloading...')
    for each in pic_url:
        print('No ' + str(i) + '.jpg is downloading ,URL:' + str(each))
        try:
            pic = requests.get(each, timeout=10)
        except requests.exceptions.ConnectionError:
            print('error: This photo cannot be downloaded')
            continue

        dir = 'image/' + keyword + '_' + str(i) + '.jpg'
        fp = open(dir, 'wb')
        fp.write(pic.content)
        fp.close()
        i += 1
if __name__ == '__main__':
    keyword = '福气'  # 改变keyword就可以得到你要搜索的图片
    dataList = getpage(keyword, 2)  # key word and number of page
    getImg(dataList, '/images', keyword)  # path

Traitement d'image

Dans cette partie, j'ai fait les trois traitements d'image les plus simples (en fait juste appelés la fonction), essentiellement terminés en une ou deux phrases. Un "traitement de gris", une "inversion de pixel" et une "inversion d'image" ont été respectivement appliqués à l'image. code montrer comme ci-dessous.


import cv2
from matplotlib import pyplot as plt
import numpy as np

imgOgr = cv2.imread('D://python_pycharm//MyPy//image//fu_7.jpg')
# 转换颜色模式,显示原图
img = cv2.cvtColor(imgOgr, cv2.COLOR_BGR2RGB)
# 灰度图
img_gray = cv2.cvtColor(imgOgr, cv2.COLOR_RGB2GRAY)
# 反色
img_array = np.asarray(img)
img_re = 255 - img_array
# 倒
img_r = cv2.flip(img, -1)

plt.subplot(2, 2, 1), plt.imshow(img)
plt.title('Original'), plt.xticks([]), plt.yticks([])
plt.subplot(2, 2, 2), plt.imshow(img_gray, cmap="gray")
plt.title('Gray'), plt.xticks([]), plt.yticks([])
plt.subplot(2, 2, 3), plt.imshow(img_re)
plt.title('re'), plt.xticks([]), plt.yticks([])
plt.subplot(2, 2, 4), plt.imshow(img_r)
plt.title('r'), plt.xticks([]), plt.yticks([])
plt.show()

Montrer les résultats

1. Effet de capture d'image

Une bénédiction devient plus de bénédiction Opération d'image de base de capture d'image réseau Alipay Jifu

Une bénédiction devient plus de bénédiction Opération d'image de base de capture d'image réseau Alipay Jifu

2. Résultats du traitement d'image

Une bénédiction devient plus de bénédiction Opération d'image de base de capture d'image réseau Alipay Jifu

Je suppose que tu aimes

Origine blog.51cto.com/15069472/2577343
conseillé
Classement