Я добавляю результаты из моей модели обнаружения объектов (latestObservation) в список (listofObservation), который работает нормально, но я бы хотел добавить условие, чтобы последнее наблюдение добавлялось, только если оно отличается от предыдущего 3 наблюдения.
При сравнении последнего результата с предыдущими наблюдениями у меня возникла проблема с доступом к переменной.
Это мой код:
var latestObservation = (topIdentifier: String(), topConfidence: Float(), scndIdentifier: String(), scndConfidence: Float())
var listofObservation:[(topIdentifier: String, topConfidence: Float, scndIdentifier: String, scndConfidence: Float)] = []
var LastTopIdentifierCounter = 0
// ... and the part of the func drawVisionRequestResults that is relevant here follows:
for observation in results where observation is VNRecognizedObjectObservation {
guard let objectObservation = observation as? VNRecognizedObjectObservation else {
continue
}
// Select only the label with the highest confidence and the second highest confidence:
let topLabelObservation = objectObservation.labels[0]
let secondLabelObservation = objectObservation.labels[1]
latestObservation = (topIdentifier: topLabelObservation.identifier, topConfidence: topLabelObservation.confidence, scndIdentifier: secondLabelObservation.identifier, scndConfidence: secondLabelObservation.confidence)
let OFL = listofObservation.count
if (listofObservation.topIdentifier(OFL)) == latestObservation.topIdentifier
&& latestObservation.topidentifier == listofObservation.topIdentifier[OFL-1]
&& latestObservation.topidentifier == listofObservation.topIdentifier[OFL-2]
{
LastTopIdentifierCounter += (1)
}
else {
listofObservation.append(latestObservation)
LastTopIdentifierCounter = 0
print(latestObservation)
print(listofObservation)
печать показывает следующее содержание переменных (в случае, если я сделаю добавление безусловным):
- latestObservation:
(topIdentifier: "6.no_phase", topConfidence: 0.87878287, scndIdentifier: "4.Faden_abnehmen", scndConfidence: 0.06840562)
- список наблюдения:
[(topIdentifier: "6.no_phase", topConfidence: 0.87878287, scndIdentifier: "4.Faden_abnehmen", scndConfidence: 0.06840562), (topIdentifier: "6.no_phase", topConfidence: 0.726424abne, scndIdentifier_ "4.FD) , scndConfidence: 0.22894023), (topIdentifier: "6.no_phase", topConfidence: 0.92339694, scndIdentifier: "4.Faden_abnehmen", scndConfidence: 0.058480877)]
в строке кода:
if (listofObservation.topIdentifier(OFL)) == latestObservation.topIdentifier
Я получаю следующее сообщение:
Значение типа '[(topIdentifier: String, topConfidence: Float, scndIdentifier: String, scndConfidence: Float)] не имеет члена' topIdentifier '
Я очень новичок в стремительности и поэтому должен извиниться, так как это, вероятно, довольно наивный вопрос ... Я боролся с этим уже 2 дня и нигде не могу найти правильный совет, как решить эту проблему.
Любой комментарий высоко ценится.
Большое спасибо!