很抱歉在这里问这个问题,但是我已经待了好几天了,所以我不知道要使用什么公式。我希望有人知道我能做什么,谢谢!
因此,我正在尝试制作用于Darknet的GUI工具,但前面显示的小方块位置错误。
图片尺寸:1024 x 683
标签文件中的注释行:0 0.6681250000000001 0.510788 0.09750000000000003 0.15103200000000006
我正在尝试像这样获得x,y,w,h
var convertDarknetImageLabelsToMatrices = function(loadedImage){
// loadedImage = {
// annotation: "0 0.6681250000000001 0.510788 0.09750000000000003 0.15103200000000006",
// dimensions: {
// height: 683,
// width: 1024
// }
// }
var width = loadedImage.dimensions.width
var height = loadedImage.dimensions.height
var matrices = []
var labels = loadedImage.annotation.split('\n')
labels.forEach(function(label){
if(!label)return
var lineParts = label.split(' ')
var classNumber = lineParts[0]
var x = lineParts[1] * width / 2
var y = lineParts[2] * height / 2
var w = lineParts[3] * width
var h = lineParts[4] * height
matrices.push({
classNumber: classNumber,
tag: loadedImage.className,
x: x,
y: y,
w: w,
h: h,
imageWidth: width,
imageHeight: height
})
})
return matrices
}
解析部分是
var x = lineParts[1] * width / 2
var y = lineParts[2] * height / 2
var w = lineParts[3] * width
var h = lineParts[4] * height
我添加了/2
,因为它看起来更近了。在某些图像上,它在单轴上几乎是精确的,例如X会对齐但Y会偏离。我试图计算出一个静态公式,但每次打开另一张图像时,它总是会朝其他方向关闭。
培训本身就很好,我稍后不能在用户界面中编辑/查看框:(
谢谢!如果您需要更多信息,请告诉我!
答案 0 :(得分:0)
感谢所有查看并考虑回答的人。我只是想通了!这是我需要用于解析的东西。
var w = lineParts[3] * width
var h = lineParts[4] * height
var x = (lineParts[1] * width) - w / 2
var y = (lineParts[2] * height) - h / 2