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

基于圆形坐标裁剪图像时区域错位问题求助(附OpenCV代码)

问题:OpenCV矩形绘制与图像裁剪区域未对齐

尝试基于圆形坐标裁剪图像,初始实现代码如下:

startx = circle[0]
starty = circle[1]
radius = circle[2]
recImage = cv2.rectangle(image,(startx-radius,starty-radius), (startx+radius,starty+radius), (0,0,255),2)
miniImage = recImage[startx-radius:startx+radius,starty-radius:starty+radius]

其中circle[0]、circle[1]为圆心的x、y坐标,circle[2]为半径。预期recImage绘制的矩形与miniImage裁剪的区域对齐,但实际二者并未重合。


原因分析

OpenCV中存在坐标顺序差异:

  • cv2.rectangle函数接收的坐标参数为**(x, y)**(列在前,行在后,对应图像水平、垂直方向)
  • 图像数组的索引顺序为**[行(y), 列(x)]**(垂直方向在前,水平方向在后)
    两者顺序不匹配,导致裁剪区域和绘制矩形错位。

解决方法

调整裁剪时的数组索引顺序,将y轴(行)范围放在前面,x轴(列)范围放在后面:

startx = circle[0]
starty = circle[1]
radius = circle[2]
# 矩形绘制逻辑保持不变,参数为(x,y)
recImage = cv2.rectangle(image,(startx-radius,starty-radius), (startx+radius,starty+radius), (0,0,255),2)
# 裁剪改为 [y起始:y结束, x起始:x结束]
miniImage = recImage[starty-radius:starty+radius, startx-radius:startx+radius]

修改后,裁剪区域会与绘制的红色矩形完全重合,因为此时裁剪的行范围对应矩形的y轴范围,列范围对应矩形的x轴范围,坐标逻辑统一。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:10:18