2012-11-02 20 views
5

Używam OpenCV 2.4.2 i próbuję wykonać projekcje dwóch macierzy (tmpl(32x44), subj(32x44)) wzdłuż wiersza i kolumny. Zainicjowałem macierz wyników jako rowProjectionSubj(subj.rows,1,CV_8UC1) Następnie zadzwonię pod numer cv::reduce(subj,rowProjectionSubj,1,CV_REDUCE_SUM,-1); Dlaczego to narzeka na niezgodność typu? Ja zachowałem typy sama (przez utrzymywanie dtype=-1 w cv::reduce dostaję obiekty tmpl i subj, wykonując cv::imread("image_path",0) czyli skanowania obrazów w skali szarości wNieobsługiwany format lub kombinacja formatów przy użyciu metody cv :: reduce w OpenCV

Odpowiedz

2

I nie może być w porządku, ale po tym jak zobaczyłem to:..

http://answers.opencv.org/question/3698/cvreduce-gives-unsupported-format-exception/?answer=3701#post-id-3701

i przy odrobinie eksperymentu i przy użyciu starego przyjaciela o nazwie "zarejestruj matematyki", zdałem sobie sprawę, że po dodaniu dwóch liczb 8-bitowych, należy rozważyć rejestr 8 + 1 + 1 bit do przechowywania sumy, ponieważ potencjalnie ma nośnik wyjściowy, więc każdy wynik redukcji powinien mieć większą przestrzeń niż źródło, np. źródło jest 8-bitowy unsigned, powinno być co najmniej 16-bitowe unsigned lub signed; równie dobrze może być 32-bitowy, jeśli będzie używany do obliczania niektórych produktów i takich ...

UWAGA: Typ miejsca docelowego musi być WYJĄTKOWO określony w metodzie cv :: reduce. Proszę śledzić mój link openCV w celu uzyskania dalszych informacji.