You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python OpenCV将图像分九块并处理中心区域?

图像九分分割与中心区域处理实现方案

我来帮你完成把图像分割成九个区域并针对性处理中心区域的需求,结合你提供的皮肤检测代码,我整理了完整的可运行实现:

import numpy as np
import imutils
import cv2

# 定义被视为“皮肤”的HSV像素强度的上下边界
lower = np.array([0, 48, 80], dtype="uint8")
upper = np.array([20, 255, 255], dtype="uint8")

# 读取图像并调整尺寸为固定宽度,方便后续等分
frame = cv2.imread("image/girl.jpg")
frame = imutils.resize(frame, width=400)
height, width = frame.shape[:2]

# 转换到HSV色彩空间,准备皮肤检测
converted = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
skinMask = cv2.inRange(converted, lower, upper)

# 对掩码做形态学操作,去除噪声
skinMask = cv2.GaussianBlur(skinMask, (3, 3), 0)
skinMask = cv2.morphologyEx(skinMask, cv2.MORPH_OPEN, np.ones((3,3), np.uint8))

# --- 核心:将图像分割为9个区域并处理中心区域 ---
# 计算每个区域的宽高步长(三等分)
w_step = width // 3
h_step = height // 3

# 确定中心区域的坐标范围:从(1*w_step, 1*h_step)到(2*w_step, 2*h_step)
center_x_start, center_y_start = w_step, h_step
center_x_end, center_y_end = 2 * w_step, 2 * h_step

# 提取中心区域的图像和对应的皮肤掩码
center_region = frame[center_y_start:center_y_end, center_x_start:center_x_end]
center_skin_mask = skinMask[center_y_start:center_y_end, center_x_start:center_x_end]

# 对中心区域进行皮肤处理示例:提取皮肤区域,其余部分置灰
# 先把中心区域转灰度
gray_center = cv2.cvtColor(center_region, cv2.COLOR_BGR2GRAY)
gray_center = cv2.cvtColor(gray_center, cv2.COLOR_GRAY2BGR)
# 只保留皮肤区域的彩色,其余用灰度填充
processed_center = np.where(center_skin_mask[:, :, None] == 255, center_region, gray_center)

# 将处理后的中心区域放回原图像
frame[center_y_start:center_y_end, center_x_start:center_x_end] = processed_center

# 可选:绘制分割线,直观展示九个区域
# 绘制垂直分割线
cv2.line(frame, (w_step, 0), (w_step, height), (0, 255, 0), 1)
cv2.line(frame, (2*w_step, 0), (2*w_step, height), (0, 255, 0), 1)
# 绘制水平分割线
cv2.line(frame, (0, h_step), (width, h_step), (0, 255, 0), 1)
cv2.line(frame, (0, 2*h_step), (width, 2*h_step), (0, 255, 0), 1)

# 显示结果
cv2.imshow("Processed Image", frame)
cv2.waitKey(0)
cv2.destroyAllWindows()

关键步骤说明:

  • 图像等分逻辑:通过将图像的宽高分别除以3,得到每个区域的步长,中心区域就是第2行第2列的区域(从索引1到2的步长区间)。
  • 皮肤检测优化:在生成皮肤掩码后,增加了高斯模糊和开运算,用来消除小的噪声点,让皮肤区域更平滑。
  • 中心区域处理示例:这里做了一个“彩色皮肤+灰度背景”的效果,你可以根据需求替换成其他处理,比如:
    • 对中心区域的皮肤做磨皮、美白
    • 提取中心皮肤区域保存为单独图像
    • 给中心区域添加滤镜效果
  • 分割线可视化:添加了绿色的分割线,方便你直观看到九个区域的划分,不需要的话可以删掉这部分代码。

内容的提问来源于stack exchange,提问作者Barathy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:52:34