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

如何在Python OpenCV中对图像特定区域应用阈值处理?

针对图像特定区域执行阈值处理的方法

完全可以只对图像的特定区域而非整幅图执行阈值处理,核心思路是先提取目标区域(ROI),单独对该区域做阈值处理后再放回原图像。

针对你提供的代码,修改步骤如下:

  1. 明确要处理的区域坐标(x1,y1)到(x2,y2),注意OpenCV中图像的坐标顺序是先行后列(即y方向在前,x方向在后)
  2. 提取该区域的灰度图ROI
  3. 对ROI执行阈值处理
  4. 将处理后的ROI替换回原灰度图像

修改后的完整代码如下:

import cv2

# 读取图像并显示
image = cv2.imread('ANNOTATION01_monitor.PNG')
cv2.imshow('Original', image)
cv2.waitKey()

# 转为灰度图
grayscale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow('Grayscale', grayscale)
cv2.waitKey()

# 定义目标区域坐标(替换成你实际需要的数值)
x1, y1 = 50, 50
x2, y2 = 200, 200

# 提取ROI区域
roi = grayscale[y1:y2, x1:x2]
# 对ROI执行阈值处理(修正原代码中未定义的after_img变量问题)
ret, thresh_roi = cv2.threshold(roi, 30, 255, cv2.THRESH_BINARY)
# 将处理后的ROI放回原灰度图
grayscale[y1:y2, x1:x2] = thresh_roi

# 显示处理后的图像
cv2.imshow('Thresholded ROI', grayscale)
cv2.waitKey()
cv2.destroyAllWindows()  # 最后销毁窗口释放资源

关键说明:

  • 原代码中cv2.threshold(after_img,30,255,cv2.THRESH_BINARY)里的after_img是未定义变量,已修正为针对ROI的处理逻辑
  • 若要对不同区域应用不同类型的阈值处理(比如部分区域用THRESH_BINARY,部分用THRESH_BINARY_INV),只需重复「提取ROI→处理→放回」的步骤,给每个区域设置对应的阈值参数即可

内容的提问来源于stack exchange,提问作者Mahnaz Rafia Islam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:40:25