OpenCv и векторы для преобразования изображения в YUV и обратного просмотра - PullRequest
0 голосов
/ 01 ноября 2018

У меня проблема с использованием openCV, мне нужно разделить картинку на векторную цветовую схему YUV и затем повернуть ее обратно, я новичок в этом деле, и я не знаю, как решить мою проблему, а также я не смог не могу найти никакого решения. Проблема в том, что после изменения его из YUV обратно в базовое базовая картина отличается от той, что была у меня в начале процесса (и они должны выглядеть одинаково), похоже, что компонент цвета отсутствует или что-то в этом роде. Может ли кто-нибудь помочь мне решить мою проблему?

#include <QCoreApplication>
#include <iostream>
#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

using namespace cv;
using namespace std;


int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    //reading picture from pc and importing it into Mat variable
    Mat zdjecie, zdjeciePoZmianie, zdjecieOdwr, pom, zdjMerge;

    //zdjecie variable - have basic picture in it
    //zdjeciePoZmianie - new picture after converting to YUV and spliting it
    //zdjecieOdwr - to inverse the process to have basic picture from YUV pic
    //zdjMerge - variable when i merged vector into

    zdjecie=imread("/home/major/Downloads/Dan.jpg",CV_LOAD_IMAGE_COLOR);
    imshow("pic before operations",zdjecie);

    //Separating picture components
    vector<Mat> vec1, vec2;
    cvtColor(zdjecie, zdjeciePoZmianie, CV_BGR2YUV);
    split(zdjeciePoZmianie,vec1);

    pom=Mat::zeros(Size(zdjeciePoZmianie.cols, zdjeciePoZmianie.rows),CV_8UC1);
    vec2.push_back(vec1[0]);
    vec2.push_back(vec1[1]);
    vec2.push_back(vec1[2]);

    merge(vec2,zdjMerge);

    imshow("after changing to YUV", zdjMerge);

    //Reversing to the basic pic
    cvtColor(zdjeciePoZmianie, zdjecieOdwr, CV_BGR2YUV);
    imshow("Reversed back", zdjecieOdwr);
    return a.exec();
}

Вот так YUV выглядит нормально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...