Jak zmienić zakres?

0

Wykorzystuję OpenCv do wykrywania twarzy i na podstawie tego sterowania silnikiem, tj. konkretniej im wyżej wykryta twarz na ekranie się znajduje tym szybciej kręci się silnik im niżej tym wolniej.

Ale w współrzędne, które są mi zwracane są zwracane mi w odwrotny sposób, czyli im wyżej tym niższa wartość powiedzmy, że zakres wartości jest od 0 - 255, bo taką sobie rozdzielczość obrazu ustawiłem jak teraz zamienić w najprostszy sposób, żeby na samej górze było 255, a na samym dole 0? Bez użycia 255 ifów, macie jakiś pomysł?

1

Użyć odejmowania?

0
Patryk27 napisał(a):

Użyć odejmowania?

Ale to musiałbym dla każdego z osobna dawać if'a, np. if(face_y==255) face_y-=254

Czy chodzi Tobie o to, żeby zamienić je na ujemne?

1

Ehm, uwaga: 255 - x.

0
Patryk27 napisał(a):

Ehm, uwaga: 255 - x.

face_y=face_y-255
face_y=face_y*(-1)

Dobrze?

0

x <- 255 - x.

0

@Indżynier: włącz myślenie. Masz od 255 odjąć x, nie na odwrót.

face_y = 255 - face_y;

Dla 0 dostaniesz 255, a dla 255 dostaniesz 0.

0
furious programming napisał(a):

@Indżynier: włącz myślenie. Masz od 255 odjąć x, nie na odwrót.

face_y = 255 - face_y;

Dla 0 dostaniesz 255, a dla 255 dostaniesz 0.

Ok dziękuje. Ale wydaje mi się, że mój sposób z odjęciem 255 i pomnożeniem przez -1 też działa, ale może to błędne myślenie :P

1

Obydwa wyrażenia są identyczne:

x = -1 * (x - 255) // <- Twoja wersja
x = -x + 255
x = 255 - x // <- moja wersja

Choć moja wersja i @furious programming jest lepsza (bardziej czytelna).

0
Indżynier napisał(a):

Ale wydaje mi się, że mój sposób z odjęciem 255 i pomnożeniem przez -1 też działa, ale może to błędne myślenie :P

Jeśli daje te same wyniki to od biedy może być, jednak jeśli da się coś zapisać krócej, to warto to robić. Im mniej skomplikowany kod, tym łatwiej się go analizuje i poprawia ew. błędy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1