Насколько я понимаю, стандартные методы выдают кортежи с x,y,w,h.
Дальше можно сделать бинаризацию(или выделение границ) найденных прямоугольников и поискать с помощью Хафа круги(окружности).
Да легко, при вращении через warpAffine установить BorderTypes в нужный тип.
Например:
cv.warpAffine(src, dst, M, dsize, cv.INTER_LINEAR, cv.BORDER_REFLECT, new cv.Scalar());
Тут можете потренироваться на Лене: https://docs.opencv.org/3.4/dd/d52/tutorial_js_geo...
rect := image.Rect(minX, minY, maxX, maxY)
заменить на
rect := image.Rect(minX, minY, minX+inputImg.Cols(), minY+inputImg.Rows())
или тоже самое в расчете maxX/Y