OpenCV InputArray / OutputArray

Właśnie skompilowałem ostatnią wersję OpenCV 2.3. A ich decyzja o zmianie wszystkich danych wejściowych / wyjściowych Matrix na InputArray / OutputArray wszystko zmienia. Ten sam fragment kodu, który działał dobrze w OpenCV 2.2, jest teraz bezwartościowy.

Są dwa rozwiązania, które chciałbym zaakceptować:

Pokazując mi, gdzie mogę pobrać OpenCV 2.2 dla Linuksa, ze wszystkimi modułami, ważne jest, aby nie brakowało szwów (starałem się znaleźć odpowiedni, ale szycie zawsze brakuje!).

Pomóż mi rozwiązać to, co opisuję poniżej.

OpenCV 2.4, nawet jeśli nadal jest w wersji beta, rozwiązał ten problem i powinienem przejść do tej wersji!

Mam ten komunikat wyjątku:

<code>OpenCV Error: Assertion failed (k == STD_VECTOR_MAT) in getMat, file /home/widgg/opencv/trunk/modules/core/src/matrix.cpp, line 928
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/widgg/opencv/trunk/modules/core/src/matrix.cpp:928: error: (-215) k == STD_VECTOR_MAT in function getMat
</code>

W gdb jest to stos:

<code>#0  0x00007ffff5df3445 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff5df6bab in __GI_abort () at abort.c:91
#2  0x00007ffff674169d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007ffff673f846 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007ffff673f873 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007ffff673f96e in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00007ffff77fca51 in cv::error(cv::Exception const&) () from /usr/local/lib/libopencv_core.so.2.3
#7  0x00007ffff791306d in cv::_InputArray::getMat(int) const () from /usr/local/lib/libopencv_core.so.2.3
#8  0x00007ffff796064c in cv::perspectiveTransform(cv::_InputArray const&, cv::_OutputArray const&, cv::_InputArray const&) () from /usr/local/lib/libopencv_core.so.2.3
</code>

wreszcie mój kod, gdy dzwonię do cv :: perspectiveTransform:

<code>std::vector<cv::Point2f> corners(4);

cv::Mat cur_image = imread("my_image.jpg");

std::vector<cv::Point2f> img_corners(4);

img_corners[0] = cv::Point2f(0, 0);

img_corners[1] = cv::Point2f(cur_image.cols, 0);

img_corners[2] = cv::Point2f(cur_image.cols, cur_image.rows);

img_corners[3] = cv::Point2f(0, cur_image.rows);

cur_image.release();

cv::perspectiveTransform(img_corners, corners, m_transf);
</code>

I cv :: Mat m_transf = (Mat_ <double> (3,3) << 1, 0, 0, 0, 1, 0, 0, 0, 1); w tym miejscu!

Mam podobny problem z cv :: FindHomography. Rzecz w tym, że wczoraj kod działał poprawnie, a teraz wszystko, co dzieje się w InputArray / OuputArray, wszystko spieprzy.

To bardzo denerwujące, proszę o pomoc!

Znalazłem ten raport tutaj:OpenCV 2.2 Vs. 2.3 i to nie jest dobry znak! Należy to obejść!

questionAnswers(1)

yourAnswerToTheQuestion