提问者:小点点

opencv绘制矩形函数在C++,python中的表现不同


我在C++中从Yolo实现中获取边界框,检测到的边界框使用C++中的CV::Rectangle函数正确绘制,但是当在python中绘制相同的边界框坐标时,它会错误地定位对象,

C++CV::Rectangle函数输出,

Pythoncv2.rectangle方法输出,

我还确保输入图像的纵横比在python和C++中是相同的,为了利用(绘制)在python中检测到的边界框,我首先从C++检测模块(yolo)将其转储到json文件中,然后读取并呈现在单独的python脚本中,只使用cv2.rectangle来呈现图像和显示边界框


共1个答案

匿名用户

我得出的结论是,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)

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(opencv|绘制|矩形|函数|c++|python|中|表现)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?