Python中怎么生成一个马赛克画
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章将为大家详细讲解有关Python中怎么生成一个马赛克画,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。import reimport osimp
千家信息网最后更新 2025年02月05日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 dist
im1和im2是两张图片的数据,图片数据是一个三维的numpy数组,这里我们将三维数组转换成一维数组后,比较两者的欧式距离。之后要找出最相似的图片,只需遍历图片集中所有的图片,找到距离最短的那张图片,去替换原图中的小方格就可以了。
关于Python中怎么生成一个马赛克画就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
图片
方格
数据
数组
马赛克
马赛
生成
相似
内容
函数
文章
更多
知识
篇文章
三维
不错
代码
原图
参数
只需
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
怀旧服部落服务器不能联机
his数据库 设计
办公自动化网络安全的概述
网络数据库营销特点
贵州视点科技数据通讯网络技术
网络安全工程师要什么专业
app软件开发价目表
java就是软件开发吗
网络技术和网络应用
c软件开发百度招
数据库中课程表下教室的简称
数据库下列哪个是时间的格式
3630网络安全密钥
防止数据库崩溃造成的业务影响
电子商务系统数据库技术
vb简单的数据库
广州三今网络技术有限公司
网络安全产品三授权
浏览器打不开显示无法解析服务器
微信团队的网络安全中心
电脑自带数据库管理系统吗
宣城专业的模具软件开发费用
app软件开发 组织架构
爱禾网络技术有限公司
数据库应用技术 题库
3630网络安全密钥
河北dns服务器地址
周跃计算机网络技术还能用吗
申请流程数据库表设计
空调控制软件开发工程师