python - Python——用于图像分割的图像内的余弦相似度,有用吗?
问题描述
|这些是这个程序产生的星系图像,
你所要做的就是改变图像路径|这些是这个程序产生的图像| |-|-| | | | 我有一个想法,用 2 个 for 循环在图像中执行余弦相似度。它有点慢,但它似乎很好地概述了一切,从一碗汤到星系、飞机和文字。我的问题是,我想不出图像分割的用途,尤其是这种,所以我想知道,图像分割有什么用?我真的不知道如何以任何方式使用它。如果代码看起来很乱,请告诉我这是我第一次在这里发帖。另外,我怎样才能让它更快但仍然有效?
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np
import cv2
def compute_cosine_similarity(x, y):
x = np.array(x).reshape(1, -1)
y = np.array(y).reshape(1, -1)
return cosine_similarity(x, y)
file_path = './natural_images/airplane/airplane_0019.jpg' # natural_images -- kaggle dataset
image = cv2.imread(file_path, cv2.IMREAD_COLOR)
original_image = cv2.imread(file_path, cv2.IMREAD_COLOR)
image_shapes = np.array(image).shape
image_normalized = (np.array(image).reshape\
(image_shapes[0], image_shapes[1], 3) - 127.5) / 127.5
mask = np.zeros((image_shapes[0], image_shapes[1], 1))
for i in range(0, image_shapes[0] - 16, 4):
for j in range(0, image_shapes[1] - 16, 4):
if compute_cosine_similarity(image_normalized[i : i + 8, j : j + 8], \
image_normalized[i + 8 : i + 16, j + 8 : j + 16]) < 0.75:
image[i : i + 4, j : j + 4] = (0, 0, 0)
mask[i : i + 4, j : j + 4] = 1.0
cv2.imshow('Original Image', original_image)
cv2.waitKey(0)
cv2.imshow('Image with Mask', image)
cv2.waitKey(0)
cv2.imshow('Mask', mask)
cv2.waitKey(0)
解决方案
推荐阅读
- java - Java - 使用“/”作为第一个参数会引发 java.nio.file.InvalidPathException
- react-native - 预加载图像但不显示
- c# - 如何在背景上制作晕影效果?
- unit-testing - F# 使用 Pose 填充 printfn 进行单元测试
- flutter - flutter_tools.snapshot 守护进程自动启动并烧毁我的 CPU,它是什么?
- python - 拆分一个句子并按键分组每个值
- laravel - 密码重置后Laravel重定向到登录页面
- java - 使用 java lang Object 类型作为数据类型的 Avro 模式
- angular - 如何在 formBuilder Angular 中添加条件验证器
- android - 使用 android AudioRecord 获取 32 位样本?