前提・実現したいこと
OpenCV初心者です。
OpenCVのC++で、読み込んだカラー画像をRGBからXYZ画像に変換したいです。("cvtColor"を使わずに。)
発生している問題・エラーメッセージ
RGB値からXYZへの変換式は合っているのですが画像自体が変換されません。(画素値をcoutを使って表示するとちゃんと変わっているのに画像が変換されない。)
どなたかご教授願いたいです。
該当のソースコード
C++
1 2 3#include "stdafx.h" 4#include <opencv2/opencv.hpp> 5#pragma comment(lib, "opencv_world341d.lib") 6using namespace std; 7using namespace cv; 8 9Mat tool(Mat XYZ) { 10 11 12 for (int y = 0; y < XYZ.rows; ++y) 13 { 14 for (int x = 0; x < XYZ.cols; ++x) 15 { 16 17 double B = XYZ.at<Vec3b>(y, x)[0]; 18 double G = XYZ.at<Vec3b>(y, x)[1]; 19 double R = XYZ.at<Vec3b>(y, x)[2]; 20 21 double sr = R / 255; 22 double sg = G / 255; 23 double sb = B / 255; 24 25 double X = 0.4124 * sr + 0.3576 * sg + 0.1805 * sb; 26 double Y = 0.2126 * sr + 0.7152 * sg + 0.0722 * sb; 27 double Z = 0.0193 * sr + 0.1192 * sg + 0.9505 * sb; 28 29 } 30 } 31 return XYZ; 32} 33 34 35 36int main() 37{ 38 Mat RGB = imread("torii-1.2.jpg"); 39 if (RGB.empty()) { 40 cout << "ファイルが読み込めません。"; 41 cin.get(); 42 return -1; 43 } 44 45 imshow("元画像", RGB); 46 47 Mat XYZ = tool(RGB); 48 49 imshow("変換画像1", XYZ); 50 waitKey(); 51 return 52}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/11 06:38