Python中怎么生成一个马赛克画
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章将为大家详细讲解有关Python中怎么生成一个马赛克画,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。import reimport osimp
千家信息网最后更新 2025年12月03日Python中怎么生成一个马赛克画
这篇文章将为大家详细讲解有关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 distim1和im2是两张图片的数据,图片数据是一个三维的numpy数组,这里我们将三维数组转换成一维数组后,比较两者的欧式距离。之后要找出最相似的图片,只需遍历图片集中所有的图片,找到距离最短的那张图片,去替换原图中的小方格就可以了。
关于Python中怎么生成一个马赛克画就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
图片
方格
数据
数组
马赛克
马赛
生成
相似
内容
函数
文章
更多
知识
篇文章
三维
不错
代码
原图
参数
只需
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
袋鼠云开源数据库
宿迁众泽互联网科技有限公司
时代网络技术分类创新服务
access数据库怎么弄
更换服务器 数据迁移
java数据库试题
ftp服务器流量监控
设计软件开发难吗
网络技术发展的利与弊英文论点
数据库2008还原失败
谷锦网络技术工作室
订做服务器机箱哪里有
qt 提取数据库
zava软件开发
德克萨斯数据库文件的扩展名是
自组织网络技术原理
sql2005数据库引擎
房友数据库隐藏
包河区全过程网络技术咨询怎么样
未成年网络安全保护PPT
java编程中数据库查询
新乡市九晟网络技术有限公司
数据库能联网查询吗
北京中电太极软件开发怎么样
如何删除已存在的数据库
爱多特广东网络技术
我的世界基岩版电脑版服务器推荐1.17
通州软件开发模型
大秦帝国服务器破封
为了 制定网络安全法