2016-03-22 16 views
1

Görsel stüdyosunda cvTriangulatePoints işlevini kullandım (bkz. belge: http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html). Görüntü başına bir karşılık gelen noktaya (N = 1) sahip olduğumda kod çalışır, ancak ikinci bir nokta eklersek (N = 2) aşağıdaki hatayı aldım: "error: giriş argümanlarının boyutları eşleşmiyor < Noktaların sayısı aynı olmalıdır> cvTriangulatePoints. " İlk defa 1'den fazla karşılık gelen cvTriangulatePoints kullanıyorum. Daha fazla puan eklemek mümkün mü yoksa başka bir hatam mı var? N- (kanal sayısı) değeri 1'den 2'ye yükseltilirhatası: girdi bağımsız değişkenlerinin boyutları eşleşmiyor. cvTriangulatePoints

CvMat* projMatr1; 
CvMat* projMatr2; 
CvMat* projPoints1; 
CvMat* projPoints2; 
CvMat* points4D; 
int N = 2; 

projMatr1 = cvCreateMat(3, 4, CV_64FC1); 
projMatr2 = cvCreateMat(3, 4, CV_64FC1); 
projPoints1 = cvCreateMat(2, N, CV_64FC1); 
projPoints2 = cvCreateMat(2, N, CV_64FC1); 
points4D = cvCreateMat(4, N, CV_64FC1); 
// I fill the matrices with the opencv function cvSet2D() 
cvTriangulatePoints(projMatr1, projMatr2, projPoints1, projPoints2, points4D); 

cevap

0

, cvCreateMat son bağımsız değişkeni de argüman arasında Cx kısmı ifade eder

CV_64FC1 to CV_64FC2. 
    ^  ^

projPoints1 = cvCreateMat(2, N, CV_64FC2); 
projPoints2 = cvCreateMat(2, N, CV_64FC2); 
points4D = cvCreateMat(4, N, CV_64FC2); 

olarak değiştirilmelidir Kanal sayısı.

Daha genel olarak, Mat nesnesinin adını yazın, birkaç bölümden oluşur. Burada CV_64FC1 için örnek:

  • CV_ -
  • 64 kütüphane önek - baz matris elemanının başına bit sayısı (gri tonlama resim veya BGR görüntüde tek renk elemanı örneğin piksel değeri)
  • F - tipi temel eleman. Bu durumda şamandıra için F, ama aynı zamanda S olabilir (imzalı) veya U (imzasız)
  • Cx - Sen olmalıdır için kanal sayısı görüntüsü

...Cx dahil ...C2
... from here

İşte CvType daha bilgidir.

+0

Teşekkür ederim, şimdi çalışıyor. – o9090

İlgili konular