- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
对于我的雇主,我正在将已实现的图像校正方法的结果与相应的 OpenCV 实现的结果进行比较。但是,一旦调用 OpenCV 函数就会抛出异常。
OpenCV校正函数的头部是
void stereoRectify(InputArray cameraMatrix1, InputArray distCoeffs1,
InputArray cameraMatrix2, InputArray distCoeffs2,
Size imageSize, InputArray R, InputArray T, OutputArray R1,
OutputArray R2, OutputArray P1, OutputArray P2,
OutputArray Q, int flags=CALIB_ZERO_DISPARITY,
double alpha=-1, Size newImageSize=Size(),
Rect* validPixROI1=0, Rect* validPixROI2=0);
作为 InputArray 和 OutputArray 我使用类型的对象
cv::Mát
.由于相机的校准是已知的,我用正确的值手动初始化了输入矩阵。根据 corresponding documentation page,矩阵具有以下大小:
cv::Mat cameraMatrix1; // 3x3 matrix
cv::Mat distCoeffs1; // 5x1 matrix for five distortion coefficients
cv::Mat cameraMatrix2; // 3x3 matrix
cv::Mat distCoeffs2; // 5x1 matrix
cv::Mat R; // 3x3 matrix, rotation left to right camera
cv::Mat T; // 4x1 matrix, translation left to right proj. center
我这样初始化矩阵:
T = cv::Mat::zeros(4, 1, CV_64F);
T.at(0, 0) = proj_center_right.x - proj_center_left.x;
T.at(1, 0) = proj_center_right.y - proj_center_left.y;
T.at(2, 0) = proj_center_right.z - proj_center_left.z;
对于所有矩阵,我都使用 CV_64F 作为值类型。
我在控制台上打印了矩阵的内容,以验证所有值都设置正确(四舍五入):
cameraMatrix1:
| 6654; 0, 1231 |
| 0; 6654; 1037 |
| 0; 0; 1 |distCoeffs1:
| -4.57e-009; 5.94e-017; 3.68e-008; -3.46e-008; 6.37e-023 |cameraMatrix2:
| 6689; 0, 1249 |
| 0; 6689; 991 |
| 0; 0; 1|distCoeffs2:
| -4.72e-009; 2.88e-016; 6.2e-008; -8.74e-008; -8.18e-024 |R:
| 0.87; -0.003, -0.46 |
| 0.001; 0.999; -0.003 |
| 0.46; 0.002; 0.89 |T:
| 228; 0; 0; 0 |
到目前为止,一切对我来说似乎都是正确的。此外,我将输出矩阵初始化为单位矩阵(使用 cv::Mat::eye(...)),具有以下大小:
cv::Mat R1; // 3x3 matrix
cv::Mat R2; // 3x3 matrix
cv::Mat P1; // 3x4 matrix
cv::Mat P2; // 3x4 matrix
cv::Mat Q; // 4x4 matrix
最后,所需的 cv::Size 对象设置为宽度 2448 和高度 2050(相机获取的图像的大小)。一旦我将参数传递给 OpenCV 作为
cv::stereoRectify(cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, imgSize, R, T, R1, R2, P1, P2, Q);
,程序崩溃。控制台上的错误消息状态
opencv_core248, void cdecl cv::error(class cv::Exception const & ptr64) +0x152 (invalid frame pointer)
由于所有矩阵和 cv::Size 对象都已正确初始化,所以我看不出有什么问题。对于任何建议,我很感激。
câu trả lời hay nhất
您的代码最初在 gemm() 中对我来说崩溃了,将 T 更改为 3x1 vec 似乎有所帮助:
// Mat_ used here for easy << initialization
cv::Mat_ cameraMatrix1(3,3); // 3x3 matrix
cv::Mat_ distCoeffs1(5,1); // 5x1 matrix for five distortion coefficients
cv::Mat_ cameraMatrix2(3,3); // 3x3 matrix
cv::Mat_ distCoeffs2(5,1); // 5x1 matrix
cv::Mat_ R(3,3); // 3x3 matrix, rotation left to right camera
cv::Mat_ T(3,1); // * 3 * x1 matrix, translation left to right proj. center
// ^^ that's the main diff to your code, (3,1) instead of (4,1)
cameraMatrix1 << 6654, 0, 1231, 0, 6654, 1037, 0, 0, 1;
cameraMatrix2 << 6689, 0, 1249, 0, 6689, 991, 0, 0, 1;
distCoeffs1 << -4.57e-009, 5.94e-017, 3.68e-008, -3.46e-008, 6.37e-023;
distCoeffs2 << -4.72e-009, 2.88e-016, 6.2e-008, -8.74e-008, -8.18e-024;
R << 0.87, -0.003, -0.46, 0.001, 0.999, -0.003, 0.46, 0.002, 0.89;
T << 228, 0, 0;
cv::Mat R1,R2,P1,P2,Q; // you're safe to leave OutpuArrays empty !
Size imgSize(3000,3000); // wild guess from you cameramat ( not that it matters )
cv::stereoRectify(cameraMatrix1, distCoeffs1, cameraMatrix2, distCoeffs2, imgSize, R, T, R1, R2, P1, P2, Q);
cerr << "Q" << Q << endl;
关于c++ - 在 OpenCV 中调用 stereoRectify 导致异常 : invalid frame pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21163815/
Để mã của tôi được viết gần như hoàn toàn bằng Jquery, tôi muốn viết lại các lệnh gọi AJAX trong Jquery. Đây là lệnh gọi từ trang web tới servlet Tomcat. Mã tương tự cho tình huống hiện tại của tôi: var http = new
Tôi muốn gọi hàm C từ Java bằng JNI. Trong hàm C, tôi muốn tạo một JVM và gọi một số đối tượng Java. Khi tôi cố gắng tạo một JVM, JNI_CreateJavaVM trả về -1. Vì vậy, tôi muốn biết
Nhìn xung quanh, tôi thấy rằng cách tốt nhất để gọi một hàm Javascript từ HTML là đặt chính hàm đó vào HTML, thay vì một tệp Javascript bên ngoài. Vì vậy, tôi đã tìm kiếm trên mạng và tìm thấy một số hướng dẫn ngắn để tôi có thể root
Tôi có thành phần này: nhập {Component} từ 'angular2/core'; nhập {UserServices} từ '../services/UserService
Tôi đang cố gắng triển khai mô hình máy khách/máy chủ OpenSSL đơn giản trong C và tò mò về việc sử dụng các lệnh gọi BIO_*, cho phép một số chức năng hay so với các lệnh gọi SSL_* thô. Tôi còn khá mới với điều này nên tôi có thể sai hoàn toàn
Tôi đang xử lý một vấn đề khó khăn liên quan đến lệnh gọi không đồng bộ: hàm JQuery thực thi khi người dùng nhấp vào rồi gọi tệp php để kiểm tra xem dữ liệu đầu vào của người dùng có trùng lặp với thông tin đã có trong cơ sở dữ liệu hay không. Nếu vậy, người dùng sẽ được nhắc xác nhận xem họ muốn tiếp tục hay hủy nếu nhấp vào
Tôi có lớp sau. Nhiệm vụ công khai { Nhiệm vụ tĩnh công khai getInstance(String taskName) { trả về mới
Này, tôi đang xây dựng một trò chơi nhỏ và tôi đang tạo các cấp độ bằng cách tạo một vectơ số liên kết với 1-4 màu thông qua một bảng liệt kê. Vấn đề là vòng lặp (trong Simon::loadChallenge) tôi sẽ
Tôi có api khởi động mùa xuân java (bộ thu dữ liệu) được khách hàng gọi để lưu một số dữ liệu. Sau khi hoàn tất việc lưu giữ dữ liệu, tôi muốn thực hiện một lệnh gọi api khác (sẽ xử lý dữ liệu đã lưu - trình tổng hợp dữ liệu) để tự phân biệt
Đầu tiên, điều này liên quan đến ứng dụng máy tính để bàn chứ không phải ứng dụng ASP .Net. Tôi đã thêm tham chiếu Web vào dự án của mình và xây dựng nhiều đối tượng dữ liệu khác nhau như PayerInfo, Địa chỉ và Thẻ tín dụng. Nhưng vấn đề
Làm cách nào để yêu cầu FAKE biên dịch tệp .fs bằng fsc? Điểm thưởng khi giải thích cách chuyển các đối số như -a và -target:dll. EDIT: Tôi nên làm rõ rằng tôi đang cố gắng thực hiện việc này mà không cần MSBuild/xbuild/. sl
Tôi đã định cấu hình một mô hình đường trục đơn giản và xem bằng cách sử dụng mẫu gạch dưới. Hai API riêng biệt sử dụng cấu hình giống hệt nhau. API 1 hoạt động như mong đợi. Để tái hiện sự cố, hãy nhận xét URL cho API 1 và bỏ ghi chú URL cho API 2
Tôi không chắc đâu sẽ là cách tiếp cận tốt hơn hay cách tiếp cận thực tế hơn. Tôi đang tìm cách tạo một hệ thống thư mục từ đầu nhưng không chắc chắn cách tiếp cận tốt nhất là gì. Tôi nghĩ rằng tôi sử dụng các đối tượng khi cần hiển thị thông tin, ví dụ info.php?id=100. Có mã như thế này để hiển thị Game.cl
từ datetime nhập timedelta lớp A: def __abs__(self): return -self lớp B1(A):
Tôi gặp sự cố khi thao tác với các mảng trong mã mẫu Trò chơi cuộc sống này. Tình huống: "Trò chơi cuộc sống" là một công nghệ tự động hóa tế bào được phát minh bởi John Conway. Nó bao gồm một mạng lưới các tế bào sống/chết/sinh sản theo các quy luật toán học. Các ô sống và chết trong lưới này
Nếu tôi gọi read() như thế này để đọc một tệp: unsigned char buf[512]; memset(buf, 0, sizeof(unsigned char) * 512);
Tôi đã viết một máy chủ đơn giản bằng C và muốn gọi nó với chức năng tương tự như gọi các daemon C khác (chẳng hạn như gọi nó bằng ./ftpd start và tắt phiên bản bằng ./ftpd stop). Rõ ràng vấn đề tôi đang gặp phải là tôi không biết
Trong dos, nó hoạt động khi tôi dán lệnh này: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://google.
Trong dos, nó hoạt động khi tôi dán lệnh này: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" https://google.
Tôi muốn có thể gọi python3 từ cmd trên máy tính Windows 10 của mình. Tôi đã cài đặt lại Python3.7 và đảm bảo đã chọn tùy chọn "Thêm vào đường dẫn", nhưng vẫn không thể gọi python3 và nhận CMD để khởi động P
Tôi là một lập trình viên xuất sắc, rất giỏi!