Forum » Programiranje » [JavaCV]cvApproxPoly Input array is not a valid matrix
[JavaCV]cvApproxPoly Input array is not a valid matrix
Steinkauz ::
Torej probam detektirat pravokotnik, ki je popačen s perspektivo in ga uporabiti za popravek perspektive.
corners_seq na koncu vsebuje 4 točke.
Vendar ob klicu cvApproxPoly dobim error OpenCV Error: Bad argument (Input array is not a valid matrix) in unknown function, file ..\..\..\src\opencv\modules\imgproc\src\utils.cpp, line 54
Exception in thread "main" java.lang.RuntimeException: ..\..\..\src\opencv\modules\imgproc\src\utils.cpp:54: error: (-5) Input array is not a valid matrix
at com.googlecode.javacv.cpp.opencv_imgproc.cvApproxPoly(Native Method)
A kdo ve kaj bi blo narobe? Upam da je kak opencv/javacv developer tlele :)
CvSeq corners_seq = cvCreateSeq(0 , Loader.sizeof(CvSeq.class), Loader.sizeof(CvPoint.class), corners_storage); for (int i = 0; i < table_lines.length; i++) { for (int j = i + 1; j < table_lines.length; j++) { CvPoint pt = HelperClass.ComputeIntersection(table_lines[i][0],table_lines[i][1], table_lines[j][0],table_lines[j][1]); if (pt.x() >= 0 && pt.y() >= 0) { corners_seq.put(pt); } } } CvMemStorage corners_storage = cvCreateMemStorage(0); CvSeq corners = cvApproxPoly(corners_seq, corners_seq.header_size(), corners_storage, CV_POLY_APPROX_DP, 8, 0);
corners_seq na koncu vsebuje 4 točke.
Vendar ob klicu cvApproxPoly dobim error OpenCV Error: Bad argument (Input array is not a valid matrix) in unknown function, file ..\..\..\src\opencv\modules\imgproc\src\utils.cpp, line 54
Exception in thread "main" java.lang.RuntimeException: ..\..\..\src\opencv\modules\imgproc\src\utils.cpp:54: error: (-5) Input array is not a valid matrix
at com.googlecode.javacv.cpp.opencv_imgproc.cvApproxPoly(Native Method)
A kdo ve kaj bi blo narobe? Upam da je kak opencv/javacv developer tlele :)
fiction ::
Zdravo sodelavec!
Sicer nimam pojma o OpenCV, ampak glede na source - https://github.com/Itseez/opencv/blob/m... bi poizkusil prvi parameter cvCreateSeq() spremeniti iz 0 v (CV_SEQ_KIND_CURVE | CV_SEQ_ELTYPE_POINT).
CV_POLY_APPROX_DP pomeni Douglas-Peucker algoritem (sem mel enkrat to nesrečo, da sem moral vse skupaj ročno implementirati). cvApproxPoly() podaš seznam točk, vrne pa podmnožico teh točk, tako da te še dovolj dobro opisujejo polyline. Pri tem se robni točki ohranita (vedno dobiš najmanj 2 točki). Se pravi, če nimaš nekega bolanega thresholda, bi moral dobiti točno pt-je.
Sicer nimam pojma o OpenCV, ampak glede na source - https://github.com/Itseez/opencv/blob/m... bi poizkusil prvi parameter cvCreateSeq() spremeniti iz 0 v (CV_SEQ_KIND_CURVE | CV_SEQ_ELTYPE_POINT).
CV_POLY_APPROX_DP pomeni Douglas-Peucker algoritem (sem mel enkrat to nesrečo, da sem moral vse skupaj ročno implementirati). cvApproxPoly() podaš seznam točk, vrne pa podmnožico teh točk, tako da te še dovolj dobro opisujejo polyline. Pri tem se robni točki ohranita (vedno dobiš najmanj 2 točki). Se pravi, če nimaš nekega bolanega thresholda, bi moral dobiti točno pt-je.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | oracle 12 identity (the old way)Oddelek: Programiranje | 1055 (860) | detroit |
» | PostgreSQL pomočOddelek: Programiranje | 2500 (1993) | Mato989 |
» | OpenCV začetekOddelek: Programiranje | 1248 (886) | Icematxyz |
» | Začetniški problem pri klicanju funkcijOddelek: Programiranje | 957 (799) | Vesoljc |
» | Skeniranje BMP ce vsebuje SubSlikoOddelek: Programiranje | 1372 (1265) | MTm2H37rqt7B |