我在使用 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 看起来正常的样子
