В моем коде, я не хочу, чтобы считывать данные с разгрома изображений, такие какКак передать данные Mat с помощью указателя данных изображений
cv::Mat img_1 = imread("F:\1.tif");
Вместо этого я хочу прочитать данные из указателя:
float* srcImage;//pointer to image data
cv::Mat img_1(height, width, CV_32FC1, srcImage);
Однако, я обнаружил, что, таким образом, когда я использовал img_1 в следующей функции ORB, он не работает
cv::ORB orb;
vector<cv::KeyPoint> keyPoints_1;
cv::Mat descriptors_1;
orb(img_1, cv::Mat(), keyPoints_1, descriptors_1);
Как можно па I s данных в Mat из указателя? Есть ли разница между функцией imread() и передачей данных из указателя? Или, есть ли какой-либо специальный запрос в функции cv :: ORB?
Большое спасибо! Я не знаком с OpenCV, я просто начал использовать его в течение нескольких недель, мне просто нужно решить эту проблему, а остальная часть моего кода зависит от результатов этой части.
Большое спасибо. Я попробую другую функцию обнаружения функции. – lucky
Вам не нужно попробовать другой детектор признаков (я полагаю, это то, что вы подразумеваете под «функцией обнаружения других функций»). ORB работает отлично. Вам просто нужно преобразовать изображение в оттенки серого и передать его в качестве аргумента в соответствие. Если вы не хотите изменять исходное изображение, создайте временную, которая хранит ее, но в оттенках серого. Во многих алгоритмах в компьютерном зрении было обнаружено, что уменьшение информации о цвете не только НЕ дает плохие результаты, но также улучшает производительность (особенно для хранения данных). – rbaleksandar