最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)多張圖片合成一張馬賽克圖片

 更新時(shí)間:2021年12月28日 09:23:32   作者:松鼠愛吃餅干  
這篇文章主要介紹了了Python如何實(shí)現(xiàn)將多張圖片合成一張馬賽克圖片。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的可以學(xué)習(xí)一下

前言

最近有網(wǎng)友私信我,問如何把多張圖片合成一張馬賽克圖片的樣子

說是女兒從出生到現(xiàn)在,所有的照片,大概有上百?gòu)?,所以想使用這些照片合成一張,當(dāng)做生日禮物

那我們今天就用上次爬表情包的圖片來做一次馬賽克圖片,2萬張合成一張,想想就很激動(dòng)

圖片素材

4K高清原圖

開發(fā)環(huán)境

Python 3.6

Pycharm

實(shí)現(xiàn)代碼

先導(dǎo)入所需模塊

import cv2
import glob
import argparse
import numpy as np
from tqdm import tqdm  # 進(jìn)度條
from itertools import product  # 迭代器

讀取圖片文件

def parsArgs():
    parser = argparse.ArgumentParser('拼接馬賽克圖片')
    parser.add_argument('--targetpath', type=str, default='examples/3.jpg', help='目標(biāo)圖像路徑')
    parser.add_argument('--outputpath', type=str, default='output.jpg', help='輸出圖像的路徑')
    parser.add_argument('--sourcepath', type=str, default='sourceimages', help='用來拼接圖像的所有源圖像文件路徑')
    parser.add_argument('--blocksize', type=int, default=15, help='馬賽克快的大小')

    args = parser.parse_args()

    return args

讀取所有源圖片并計(jì)算對(duì)應(yīng)顏色平均值

def readSourceImages(sourcepath,blocksize):
    print('開始讀取圖像')

合法圖像列表

設(shè)置一個(gè)列表,存放符合要求的顏色圖像

sourceimages = []

平均顏色列表

avgcolors = []

遍歷

每遍歷一次,進(jìn)度條走一次

for path in tqdm(glob.glob("{}/*.jpg".format(sourcepath))):
    image = cv2.imread(path, cv2.IMREAD_COLOR)
    if image.shape[-1] != 3:
        continue
    # 縮放尺寸
    image = cv2.resize(image, (blocksize, blocksize))
    # 圖像顏色平均值
    avgcolor = np.sum(np.sum(image, axis=0), axis=0) / (blocksize * blocksize)
    sourceimages.append(image)
    avgcolors.append(avgcolor)
print('結(jié)束讀取')
return sourceimages,np.array(avgcolors)

主函數(shù)

def main(args):
    targetimage = cv2.imread(args.targetpath)
    outputimage = np.zeros(targetimage.shape,np.uint8)  # int8 int16 int32 int64
    sourceimages,avgcolors = readSourceImages(args.sourcepath,args.blocksize)
    print('開始制作')
    for i, j in tqdm(product(range(int(targetimage.shape[1]/args.blocksize)), range(int(targetimage.shape[0]/args.blocksize)))):
        block = targetimage[j * args.blocksize: (j + 1) * args.blocksize, i * args.blocksize: (i + 1) * args.blocksize,:]
        avgcolor = np.sum(np.sum(block, axis=0), axis=0) / (args.blocksize * args.blocksize)
        distances = np.linalg.norm(avgcolor - avgcolors, axis=1)
        idx = np.argmin(distances)
        outputimage[j * args.blocksize: (j + 1) * args.blocksize, i * args.blocksize: (i + 1) * args.blocksize, :] = \
        sourceimages[idx]
    cv2.imwrite(args.outputpath, outputimage)
    cv2.imshow('result', outputimage)
    print('制作完成')

模塊調(diào)用執(zhí)行

if __name__ == '__main__':
    # run
    main(parseArgs())

完整效果

到此這篇關(guān)于Python實(shí)現(xiàn)多張圖片合成一張馬賽克圖片的文章就介紹到這了,更多相關(guān)Python多張圖片合成馬賽克圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 函數(shù)基礎(chǔ)知識(shí)匯總

    Python 函數(shù)基礎(chǔ)知識(shí)匯總

    Python中的函數(shù),無論是命名函數(shù),還是匿名函數(shù),都是語句和表達(dá)式的集合。函數(shù)可以作為參數(shù)傳遞給其他函數(shù),這些以其他函數(shù)作為參數(shù)的函數(shù)通常稱為更高階函數(shù),這就構(gòu)成了函數(shù)式編程中一個(gè)非常重要的部分。
    2018-03-03
  • Python裝飾器使用實(shí)例:驗(yàn)證參數(shù)合法性

    Python裝飾器使用實(shí)例:驗(yàn)證參數(shù)合法性

    這篇文章主要介紹了Python裝飾器使用實(shí)例:驗(yàn)證參數(shù)合法性,本文直接給出代碼實(shí)例,代碼中包含詳細(xì)注釋,需要的朋友可以參考下
    2015-06-06
  • 利用Python實(shí)現(xiàn)數(shù)值積分的方法

    利用Python實(shí)現(xiàn)數(shù)值積分的方法

    這篇文章主要介紹了利用Python實(shí)現(xiàn)數(shù)值積分。本文主要用于對(duì)比使用Python來實(shí)現(xiàn)數(shù)學(xué)中積分的幾種計(jì)算方式,并和真值進(jìn)行對(duì)比,加深大家對(duì)積分運(yùn)算實(shí)現(xiàn)方式的理解
    2022-02-02
  • 使用wxPython實(shí)現(xiàn)Windows11任務(wù)欄通知功能

    使用wxPython實(shí)現(xiàn)Windows11任務(wù)欄通知功能

    這篇文章主要為大家詳細(xì)介紹了如何使用 wxPython 模塊,在 Windows 11 中實(shí)現(xiàn)任務(wù)欄通知功能,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10
  • 使用Python編寫一個(gè)最基礎(chǔ)的代碼解釋器的要點(diǎn)解析

    使用Python編寫一個(gè)最基礎(chǔ)的代碼解釋器的要點(diǎn)解析

    Python、Ruby等語言代碼就是在解釋器程序中一行行被解釋為機(jī)器碼同步執(zhí)行的,而如果使用Python編寫解釋器的話則可以把目標(biāo)代碼解釋為Python代碼再進(jìn)行解釋執(zhí)行,這里我們就來看一下使用Python編寫一個(gè)最基礎(chǔ)的代碼解釋器的要點(diǎn)解析:
    2016-07-07
  • python隊(duì)列原理及實(shí)現(xiàn)方法示例

    python隊(duì)列原理及實(shí)現(xiàn)方法示例

    這篇文章主要介紹了python隊(duì)列原理及實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了Python隊(duì)列的概念、原理、定義及基本操作技巧,需要的朋友可以參考下
    2019-11-11
  • Python3.7+tkinter實(shí)現(xiàn)查詢界面功能

    Python3.7+tkinter實(shí)現(xiàn)查詢界面功能

    這篇文章主要介紹了Python3.7+tkinter實(shí)現(xiàn)查詢界面功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Python 執(zhí)行矩陣與線性代數(shù)運(yùn)算

    Python 執(zhí)行矩陣與線性代數(shù)運(yùn)算

    這篇文章主要介紹了Python 執(zhí)行矩陣與線性代數(shù)運(yùn)算,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • PyTorch中topk函數(shù)的用法詳解

    PyTorch中topk函數(shù)的用法詳解

    今天小編就為大家分享一篇PyTorch中topk函數(shù)的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • django項(xiàng)目用higcharts統(tǒng)計(jì)最近七天文章點(diǎn)擊量

    django項(xiàng)目用higcharts統(tǒng)計(jì)最近七天文章點(diǎn)擊量

    這篇文章主要介紹了django項(xiàng)目用higcharts統(tǒng)計(jì)最近七天文章點(diǎn)擊量,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08

最新評(píng)論

沧州市| 麦盖提县| 阜城县| 崇信县| 昌乐县| 营山县| 将乐县| 左云县| 安阳市| 雅江县| 麻阳| 襄汾县| 龙里县| SHOW| 仲巴县| 河北省| 崇阳县| 红安县| 腾冲县| 威信县| 开江县| 盐津县| 千阳县| 施秉县| 宜城市| 濮阳市| 阳高县| 九龙城区| 丰都县| 柳江县| 湘潭市| 偏关县| 龙陵县| 肇州县| 苏尼特左旗| 尚义县| 琼结县| 江西省| 洛南县| 台南市| 余干县|