我在C++中从Yolo实现中获取边界框,检测到的边界框使用C++中的CV::Rectangle
函数正确绘制,但是当在python中绘制相同的边界框坐标时,它会错误地定位对象,
C++CV::Rectangle
函数输出,
Pythoncv2.rectangle
方法输出,
我还确保输入图像的纵横比在python和C++中是相同的,为了利用(绘制)在python中检测到的边界框,我首先从C++检测模块(yolo)将其转储到json文件中,然后读取并呈现在单独的python脚本中,只使用cv2.rectangle
来呈现图像和显示边界框
我得出的结论是,CV::Rectangle
函数为width和height参数取偏移量值,因此假设
rect = cv::Rect(x,y,w_offset,h_offset)
cv::rectangle(img, rect, cv::Scalar(0x27, 0xC1, 0x36), 2);
CV::Rectangle
函数的C++实现在内部管理具有相应结束(x,y)边界框坐标的偏移量值,但是对于基于python的实现,偏移量值需要显式地与边界框的起始(x,y)值相加,
c1, c2 = (x ,y), ((x+w_offset), (y+h_offset))
cv2.rectangle(img, c1, c2, (0, 255, 0), thickness=2, lineType=cv2.LINE_AA)