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

如何用OpenCV保留椭圆区域内容并将外部转为白色像素?

实现椭圆外部转为白色的解决方案

要达成「仅保留椭圆内部区域,外部转为白色」的反向效果,可通过遮罩+图像组合的方式实现,修改后的代码如下:

import cv2
import numpy as np

# 原阈值化步骤
_, threshold_eye = cv2.threshold(eye, 80, 255, cv2.THRESH_BINARY)
frameHeight, frameWidth = threshold_eye.shape

# 1. 创建与图像同尺寸的全白遮罩
mask = np.full((frameHeight, frameWidth), 255, dtype=np.uint8)
# 2. 在遮罩上绘制黑色填充椭圆(椭圆区域为黑色,外部保持白色)
cv2.ellipse(mask,
            (int(frameWidth/2), int(frameHeight/2)),  # 椭圆中心
            (int(frameWidth/2), int(frameHeight/2)),  # 椭圆半轴长(适配图像尺寸)
            0, 0, 360,                               # 旋转角度与绘制范围
            0,                                       # 椭圆颜色设为黑色
            -1)                                      # 填充椭圆内部

# 3. 组合图像:椭圆内保留原阈值化内容,外部转为白色
# 方法一:直接赋值替换
result = np.full_like(threshold_eye, 255)
result[mask == 0] = threshold_eye[mask == 0]

# 方法二:位运算实现(效果相同)
# result = cv2.bitwise_or(threshold_eye, mask)

效果说明

  • 处理前:阈值化后的眼睛图像,黑色区域对应眼睛特征,其余为白色背景
  • 处理后:仅椭圆范围内保留原阈值化的眼睛特征,椭圆外部区域全部变为白色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:10:29