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

使用Python/OpenCV的warpAffine进行图像平移时触发断言错误

问题原因与解决方法

错误根源

报错信息明确要求变换矩阵必须是32位浮点型(CV_32F)或64位浮点型(CV_64F),但你创建的transform_matrix默认是整数类型(当tx/ty为整数时,np.array会自动推断为int类型),不符合OpenCV的参数要求。

修复方案

有两种方式可以修正矩阵类型:

方式1:创建矩阵时直接指定浮点类型

import numpy as np
import cv2

def translate(im, tx, ty):
    height, width = im.shape[:2]
    # 创建矩阵时指定dtype为float32
    transform_matrix = np.array([[1, 0, tx], [0, 1, ty]], dtype=np.float32)
    translation = cv2.warpAffine(src=im, M=transform_matrix, dsize=(width, height))
    return translation  # 补充返回值,否则调用函数无法获取结果

方式2:将现有矩阵转换为浮点类型

import numpy as np
import cv2

def translate(im, tx, ty):
    height, width = im.shape[:2]
    transform_matrix = np.array([[1, 0, tx], [0, 1, ty]])
    # 转换矩阵为float32类型
    transform_matrix = transform_matrix.astype(np.float32)
    translation = cv2.warpAffine(src=im, M=transform_matrix, dsize=(width, height))
    return translation

额外提示

原函数缺少返回语句,调用时无法获取平移后的图像,修复后的代码补充了return translation,确保功能完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:20:58