入力画像では、画像の輝度を元の色と同じように再現する方法を考えていました。
だから私は素朴なコードを書いた:画像の輝度を再調整する
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <bits/stdc++.h>
using namespace cv;
using namespace std;
int main() {
Mat img = imread("test2.png", 1);
Mat hsv; cvtColor(img, hsv, CV_BGR2HSV);
vector<Mat > channels;split(hsv, channels);
Mat luminance; channels[2].copyTo(luminance);
Mat res; img.copyTo(res);
channels.clear(); split(res, channels);
for (int i = 0; i<res.rows; i++) {
for (int j = 0; j<res.cols; j++) {
channels[0].at<uchar>(i, j) = 0;
channels[1].at<uchar>(i, j) = 0;
channels[2].at<uchar>(i, j) = 255;
}
}
merge(channels, res);
cvtColor(res, hsv, CV_BGR2HSV);
channels.clear(); split(hsv, channels);
luminance.copyTo(channels[2]);
merge(channels, res);
cvtColor(res, res, CV_HSV2BGR);
imwrite("result.png", res);
return 0;
}
私は実際にちょうど私はそれが中になりたい色でイメージを作成し、その後、元の画像の輝度マップを抽出し、輝度マップを置き換えられたのは何この出力画像の、入力画像の輝度マップとの比較。
しかし、結果として得られる画像は陰影で暗く見えます。これを行うための良い方法はありますか?
入力画像: 結果の画像:
入力画像と現在の結果を添付してください。いくつかのグラフィックスエディタを使用して、期待される結果を示す画像を生成し、それを添付することができれば嬉しいです。 –
@DanMašekが追加されました:) –
私の答え、または他の人があなたの問題を整理しましたか?もしそうなら、それをあなたの答えとして受け入れることを検討してください - 投票数の横にある緑色のチェックマーク/チェックマークをクリックしてください。そうでない場合は、私が、または他の誰かがあなたをさらに助けることができるように、何がうまくいかないと言ってください。ありがとう。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –