91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中怎么生成一個馬賽克畫

發布時間:2021-07-10 11:19:41 來源:億速云 閱讀:146 作者:Leah 欄目:大數據

這篇文章將為大家詳細講解有關Python中怎么生成一個馬賽克畫,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

import re
import os
import cv2
import numpy as np
from tqdm import tqdm

IMG_DIR = "images"

def load_all_images(tile_row, tile_col):
   img_dir = IMG_DIR
   filenames = os.listdir(img_dir)
   result = []
   print(len(filenames))
   for filename in tqdm(filenames):
       if not re.search(".jpg", filename, re.I):
           continue
       try:
           filepath = os.path.join(img_dir, filename)
           im = cv2.imread(filepath)
           row = im.shape[0]
           col = im.shape[1]
           im = resize(im, tile_row, tile_col)
           result.append(np.array(im))
       except Exception as e:
           msg = "error with {} - {}".format(filepath, str(e))
           print(msg)
   return np.array(result, dtype=np.uint8)

這里load_all_images函數的參數就是統一后的尺寸,tile_row和tile_col分別對應高和寬。

下面的代碼對要轉換的圖片進行分割

img = cv2.imread(infile)
tile_row, tile_col = get_tile_row_col(img.shape)
for row in range(0, img_shape[0], tile_row):
   for col in range(0, img_shape[1], tile_col):
       roi = img[row:row+tile_row,col:col+tile_col,:]

我們將要轉換的圖片分割成一個個小方格,tile_row和tile_col是小方格的高和寬,roi存取小方格中的圖片數據。

下面是計算兩張圖片相似度的函數

from scipy.spatial.distance import euclidean
def img_distance(im1, im2):
   if im1.shape != im2.shape:
       msg = "shapes are different {} {}".format(im1.shape, im2.shape)
       raise Exception(msg)
   array1 = im1.flatten()
   array2 = im2.flatten()
   dist = euclidean(array1, array2)
   return dist

im1和im2是兩張圖片的數據,圖片數據是一個三維的numpy數組,這里我們將三維數組轉換成一維數組后,比較兩者的歐式距離。之后要找出最相似的圖片,只需遍歷圖片集中所有的圖片,找到距離最短的那張圖片,去替換原圖中的小方格就可以了。

關于Python中怎么生成一個馬賽克畫就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

余江县| 扎兰屯市| 松桃| 滨州市| 怀化市| 天全县| 垫江县| 宿迁市| 玛纳斯县| 新津县| 读书| 海安县| 东方市| 彭山县| 贡觉县| 松江区| 尼玛县| 乌恰县| 长宁区| 洪湖市| 八宿县| 昌都县| 南开区| 新沂市| 正阳县| 揭西县| 祁阳县| 英山县| 嘉禾县| 宁化县| 香河县| 新巴尔虎左旗| 阿尔山市| 正蓝旗| 黄骅市| 巴马| 白玉县| 荥阳市| 灵石县| 白沙| 峨眉山市|