Làm thế nào để chuyển đổi một OpenCV cv::Mat
thành một float*
có thể được đưa vào Vlfeat vl_dsift_process
? Tôi không thể hiểu cách vl_dsift_process
hoạt động trên mảng float một chiều. Các mẫu chính thức chỉ minh họa cách sử dụng API MatLab. Dường như không có mẫu về C API và đầu mối duy nhất là tệp MEX trong gói nguồn.Làm thế nào để chuyển đổi một OpenCV cv :: Mat thành một float * có thể được đưa vào Vlfeat vl_dsift_process?
Trả lời
float* matData = (float*)myMat.data;
Hãy chắc chắn rằng ma trận sẽ không bị xóa/đi ra khỏi phạm vi trước khi kết thúc bằng cách sử dụng con trỏ đến dữ liệu. Và đảm bảo ma trận chứa phao.
Ma trận cần được kiểm tra để liên tục, nếu không nó sẽ không được hiểu là mảng một chiều. Và tôi nghĩ rằng nó thích hợp hơn để sử dụng 'reinterpret_cast' ở đây vì nó cho thấy rõ ràng tính chất nguy hiểm của dàn diễn viên này. Dù sao, việc trích xuất DSIFT có thể sẽ chậm hơn nhiều so với chuyển đổi ma trận sang 'vector
Tôi không thể hiểu tác phẩm như thế nào vl_dsift_process trên một mảng float một chiều
DSIFT hy vọng một hình ảnh màu xám nơi intensivity của pixel (x, y) được lưu trữ trong float_array [y * chiều rộng + x] như giá trị float. Trong các hình ảnh OpenCV được lưu trữ dưới dạng ký tự không dấu nên chuyển đổi đơn giản của Mat :: dữ liệu thành float * sẽ không hoạt động. Bạn phải chuyển đổi thủ công mọi giá trị thành phao:
Mat mat = imread("image_name.jpg", 0); // 0 stands for grayscale
vector<float> img;
for (int i = 0; i < mat.rows; ++i)
for (int j = 0; j < mat.cols; ++j)
img.push_back(mat.at<unsigned char>(i, j));
vl_dsift_process(dsift, &img[0]);
- 1. Làm cách nào để chuyển đổi cv :: Mat thành thang màu xám trong OpenCv?
- 2. Chuyển đổi một chuỗi các byte để cv :: mat
- 3. Chuyển đổi cv :: Mat thành Magick :: Hình ảnh
- 4. Chuyển đổi hàng cv :: Mat thành int
- 5. OpenCV std :: vector <cv :: Point2f> để cv :: Mat
- 6. OpenCV - Chuyển đổi vectơ của véc tơ thành Mat
- 7. chuyển đổi cv :: Mat để const CvMat * hoặc CvMat *
- 8. Chuyển đổi từ IplImage * sang cv :: MAT
- 9. Làm thế nào tôi có thể chuyển đổi một chuỗi thành một float trong mysql?
- 10. Chuyển đổi dữ liệu từ cv :: Mat thành mxArray
- 11. Làm thế nào để chuyển đổi một Java-Array thành một JavaCV-Matrix?
- 12. Làm thế nào để viết một Mat phao vào một tập tin trong OpenCV
- 13. Làm thế nào để đưa cv :: namedWindow vào trọng tâm trong OpenCV2?
- 14. Làm thế nào để chuyển đổi một mảng float thành một byte [] và ngược lại?
- 15. Chuyển đổi kết cấu OpenGL sang OpenCV Mat
- 16. làm thế nào để chuyển đổi từ cv :: Mat tới CvArr?
- 17. OpenCV 2.3: Chuyển đổi Mat thành mảng RGBA pixel
- 18. chuyển đổi opencv từ phần tử Mat thành IplImage *
- 19. NSImage to cv :: Mat và ngược lại
- 20. unsigned char ** để OpenCV mat
- 21. Làm thế nào để chuyển đổi một mảng các chuỗi thành một mảng float trong numpy?
- 22. Làm thế nào để chuyển đổi Char thành Float
- 23. Làm thế nào để chuyển đổi một chuỗi nhị phân thành một giá trị float?
- 24. Làm thế nào để chuyển đổi một OpenCV IplImage 8-bit * thành IplImage 32-bit *?
- 25. khởi tạo một OpenCV Mat với một mảng 2D
- 26. Chuyển đổi cv thành mercurial
- 27. Chuyển đổi hình ảnh mảng float thành định dạng có thể sử dụng cho opencv
- 28. CONCATENATE Mat trong OpenCV
- 29. Làm thế nào để sử dụng cv :: BackgroundSubtractorMOG trong OpenCV?
- 30. chuyển đổi Mat để Bitmap OpenCV cho Android
Có thể vấn đề này liên quan đến cách ma trận được chuyển từ Matlab sang C? –