批量超像素子块合并为原图的代码
时间: 2023-08-13 11:03:23 浏览: 47
批量超像素子块合并为原图的代码,可以通过循环读取文件夹中的图片,然后调用前面提到的超像素子块合并成原图的函数来处理每一张图片。下面是一个简单的Python示例代码:
```python
import cv2
import os
import numpy as np
from sklearn.cluster import KMeans
# 定义超像素块
def get_superpixel_blocks(img, block_size):
h, w, c = img.shape
blocks = []
for i in range(0, h, block_size):
for j in range(0, w, block_size):
block = img[i:i+block_size, j:j+block_size]
blocks.append(block)
return np.array(blocks)
# 对超像素块进行聚类
def cluster_superpixel_blocks(blocks, n_clusters):
kmeans = KMeans(n_clusters=n_clusters, random_state=0).fit(blocks.reshape(-1, blocks.shape[-1]))
return kmeans.labels_
# 合并同一类别的超像素块
def merge_superpixel_blocks(img, labels, block_size):
h, w, c = img.shape
new_img = np.zeros((h, w, c))
for i in range(0, h, block_size):
for j in range(0, w, block_size):
block_index = (i//block_size)*(w//block_size) + (j//block_size)
label = labels[block_index]
new_img[i:i+block_size, j:j+block_size] = np.mean(img[labels==label], axis=0)
return new_img.astype(np.uint8)
# 批量处理图片
def batch_process_images(input_folder, output_folder, block_size, n_clusters):
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(input_folder):
if filename.endswith('.jpg') or filename.endswith('.jpeg') or filename.endswith('.png'):
img = cv2.imread(os.path.join(input_folder, filename))
blocks = get_superpixel_blocks(img, block_size)
labels = cluster_superpixel_blocks(blocks, n_clusters)
new_img = merge_superpixel_blocks(img, labels, block_size)
cv2.imwrite(os.path.join(output_folder, filename), new_img)
# 测试代码
input_folder = 'input_images'
output_folder = 'output_images'
block_size = 10
n_clusters = 10
batch_process_images(input_folder, output_folder, block_size, n_clusters)
```
该代码中,我们使用了os库来遍历文件夹中的所有图片,然后调用前面提到的超像素子块合并成原图的函数来处理每一张图片,并将处理完成的图片保存到指定的文件夹中。在实际应用中,还可以考虑加入异常处理、多线程等机制来提高代码的健壮性和处理速度。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)