numpy array 报错 Layout of the output array img is incompatible with cv::Mat

兄弟们看看完整报错内容:

Traceback (most recent call last):
  File "<string>", line 12, in <module>
cv2.error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function 'rectangle'
> Overload resolution failed:
>  - Layout of the output array img is incompatible with cv::Mat
>  - Expected Ptr<cv::UMat> for argument 'img'
>  - Layout of the output array img is incompatible with cv::Mat
>  - Expected Ptr<cv::UMat> for argument 'img'

我这边想检查一下数据有效性,于是中间取数据绘图看下是不是 x c y c w h x_cy_cwh xcycwh

im = img.permute(1, 2, 0).numpy()
im = (im * [0.229, 0.224,0.225] + [0.485, 0.456, 0.406]) * 255
im = im.astype(int).astype("uint8")

h, w, _ = im.shape
bbox = target[2]['boxes'][0].cpu().numpy() * [w, h, w, h]
xc, yc, bw, bh = bbox.astype(int)

x1, y1, x2, y2 = int(xc-bw//2), int(yc-bh//2), int(xc+bw//2), int(yc+bh//2)

# im = np.ascontiguousarray(im)
xx = cv2.rectangle(im, (x1, y1), (x2, y2), 255, 2, 8)   # 这里报了错
cv2.imwrite("xxx.png", im)

结果在 cv2.rectangle 那里报了错,Layout不兼容,意思是内存布局不兼容,那就调用np.ascontiguousarray,让它变成C连续数组就好

im = np.ascontiguousarray(im)
xx = cv2.rectangle(im, (x1, y1), (x2, y2), 255, 2, 8)   # 这里报了错
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值