Вероятно, это довольно простая задача, но я не уверен, что делать дальше, так как я новичок в opencv в C ++.
Я был вдохновлен этот код.
У меня тогда была идея сделать одно изображение, сделать PCA на интенсивностях RGB и визуализировать проекцию данных RGB на 3 основных компонента в оттенках серого.
Первая проблема, с которой я сталкиваюсь, это как настроить матрицу для PCA. Вот мой код до сих пор:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main( )
{
// Open another image
Mat image, imageMat;
image= imread("images/0.jpg");
imageMat = convertForPCA(image);
// Do pca and visualize channels in grayscale.
// ...
return 0;
}
Так что, если вы могли бы помочь мне реализовать функцию convertForPCA. Эта функция должна принимать матрицу изображения и возвращать матрицу с плавающей запятой n на 3, где n — количество пикселей в исходном изображении.
Я думаю, что могу продолжить с остальными, но, возможно, опубликую больше вопросов, если я застряну и не смогу найти ответ.
Я решил свою проблему, и я положил решение на GitHub на случай, если кто-нибудь столкнется с этим позже.
Других решений пока нет …