很抱歉在这里提出这个问题,但是我已经花了好几天了,所以我不知道要使用什么公式。我希望有人知道我能做什么,谢谢!
因此,我试图为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会偏离。我试图找出一个静态公式,但是只要打开另一个图像,它总是在其他方向关闭。培训本身很好,我以后不能在UI中编辑/查看框了:(
谢谢!如果您需要更多信息,请告诉我!
最佳答案
感谢所有查看并考虑回答的人。我只是想通了!这是我需要用于解析的内容。
var w = lineParts[3] * width
var h = lineParts[4] * height
var x = (lineParts[1] * width) - w / 2
var y = (lineParts[2] * height) - h / 2