中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

福清市| 江山市| 阿鲁科尔沁旗| 正镶白旗| 体育| 晋宁县| 辉县市| 和林格尔县| 抚顺县| 锦屏县| 射阳县| 桂平市| 英超| 科技| 吉林市| 东乡县| 祁东县| 四会市| 江孜县| 隆子县| 景洪市| 株洲市| 保靖县| 滕州市| 始兴县| 牡丹江市| 望江县| 平遥县| 正宁县| 通城县| 南京市| 宝鸡市| 于都县| 观塘区| 岳西县| 迁西县| 广汉市| 昌平区| 安丘市| 包头市| 新野县|