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

OpenCV中是否有裁剪图像后将未裁剪区域置黑并保留原图尺寸的方法?

OpenCV实现保留原尺寸的第四象限提取方案

你目前的写法是直接截取第四象限的子区域,自然只能得到裁剪后的小图,要保留原尺寸只需要把非第四象限的区域置黑即可,不需要单独裁剪,具体实现如下:

核心思路

OpenCV读取的图像本身就是numpy数组,直接基于numpy矩阵操作对非目标区域赋值0即可,这种方式效率远高于逐像素遍历。

实现步骤

  • 读入图像后获取宽高,计算中心坐标
  • 复制原图生成结果对象(避免修改原图)
  • 依次将上半区、下半区左半部分置黑,剩余保留的就是第四象限内容,整体尺寸和原图完全一致

代码示例

import cv2
import numpy as np

# 读入图像
img = cv2.imread("your_image_path.png")
if img is None:
    print("图像读取失败,请检查路径")
    exit()

# 获取图像尺寸与中心坐标
h, w = img.shape[:2]
center_h = h // 2
center_w = w // 2

# 方案1:直接区域赋值,逻辑简单高效
result = img.copy()
# 上半部分全部置黑
result[:center_h, :] = 0
# 下半部分的左半区置黑
result[center_h:, :center_w] = 0

# 可选方案2:掩码按位与,适合后续需要复用掩码的场景
# mask = np.zeros((h, w), dtype=np.uint8)
# mask[center_h:, center_w:] = 255
# result = cv2.bitwise_and(img, img, mask=mask)

# 验证尺寸一致
print(f"原图尺寸:{img.shape},结果图尺寸:{result.shape}")

# 展示/保存结果
cv2.imwrite("quadrant4_result.png", result)
cv2.imshow("第四象限提取结果", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

以上方法对单通道灰度图、三通道彩色图都适用,不需要额外调整逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:57:04