You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

OpenCV按坐标绘制矩形出现重叠问题,如何解决?

搞定OpenCV矩形绘制重叠问题!

嘿,你遇到的矩形错乱重叠问题,根源其实是cv2.rectangle的坐标参数传错啦😉

问题出在哪?

OpenCV画矩形的函数要求传入左上角坐标右下角坐标,格式是:

cv2.rectangle(图像, (左上角x, 左上角y), (右下角x, 右下角y), 颜色, 线宽)

但你的代码里把(xmin, xmax)当左上角,(ymin, ymax)当右下角——这完全搞混了x和y的对应关系!本来应该是(xmin, ymin)对应左上角,(xmax, ymax)对应右下角,坐标一乱,矩形自然就画错位置了。

修正后的代码

直接改对坐标参数就行,顺便给你优化了下代码逻辑:

import cv2
import os

# 你的坐标列表
points = [(1707.0, 1865.0, 2331.0, 2549.0),(1348.0, 1004.0, 1987.0, 1746.0),(749.0, 2129.0, 1674.0, 2939.0) ,(25.0, 1134.0, 1266.0, 2108.0),(253.0, 1731.0, 1403.0, 2449.0)]

# 读取图像
image = cv2.imread("pathtoimage")
# 遍历每个矩形坐标
for xmin, ymin, xmax, ymax in points:
    # 正确传入左上角和右下角坐标
    cv2.rectangle(image, (int(xmin), int(ymin)), (int(xmax), int(ymax)), (0,255,0), 8)

# 保存结果(先删旧文件再写入,避免缓存问题)
output_path = "/home/atul/Documents/CarLabel/imagemapping1-wp-BD489663-BD55-484E-9EA7-EB5662B626B9.png"
if os.path.exists(output_path):
    os.remove(output_path)
cv2.imwrite(output_path, image)

小提示

  • cv2.rectangle是直接在原图像上修改的,不需要每次都赋值给result_image,除非你想保留原图备份(那就在开头加result_image = image.copy(),然后用result_image来画矩形)。
  • 可以加个小检查,确保xmin < xmaxymin < ymax,防止坐标顺序颠倒导致的奇怪问题。

对比图

原始图像

原始图像

错误绘制结果

绘制后的图像

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

火山引擎 最新活动