2017-07-01 6 views
0

入力画像では、画像の輝度を元の色と同じように再現する方法を考えていました。
だから私は素朴なコードを書いた:画像の輝度を再調整する

#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; 
} 

私は実際にちょうど私はそれが中になりたい色でイメージを作成し、その後、元の画像の輝度マップを抽出し、輝度マップを置き換えられたのは何この出力画像の、入力画像の輝度マップとの比較。
しかし、結果として得られる画像は陰影で暗く見えます。これを行うための良い方法はありますか?
入力画像: This is the input image. 結果の画像: This is output which I am getting, which is darker.

+0

入力画像と現在の結果を添付してください。いくつかのグラフィックスエディタを使用して、期待される結果を示す画像を生成し、それを添付することができれば嬉しいです。 –

+0

@DanMašekが追加されました:) –

+0

私の答え、または他の人があなたの問題を整理しましたか?もしそうなら、それをあなたの答えとして受け入れることを検討してください - 投票数の横にある緑色のチェックマーク/チェックマークをクリックしてください。そうでない場合は、私が、または他の誰かがあなたをさらに助けることができるように、何がうまくいかないと言ってください。ありがとう。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

答えて

0

私はあなたが"着色" を探していると思います。 OpenCVには説明がありますが、アンソニーティッセンの優れた説明文にはImageMagickがあります。here - 「何とか」という言葉を検索してください。効果があなたが求めるものであれば、OpenCVにそれを適応させることができます。コマンドラインで

は、ImageMagickので、私はこれでした:ここ

convert drop.png -fill red -tint 50% result.jpg 

enter image description here

0

をImageMagickの中にもう一つの方法です。 lab luminance result

convert \(input.png -colorspace hsi -channel blue -separate \) \(-clone 0 -fill red -colorize 100 \) \(-clone 0 \) -compose colorize -composite result3.png 

hsi intensity result

何色空間を選択し

convert \(input.png -colorspace lab -channel red -separate \) \(-clone 0 -fill red -colorize 100 \) \(-clone 0 \) -compose colorize -composite result2.png 

grayscale = rec709luma result

convert \(input.png -colorspace gray \) \(-clone 0 -fill red -colorize 100 \) \(-clone 0 \) -compose colorize -composite result1.png 

は、あなたが使用したい強度/輝度を表しています。どのような色空間の強度/輝度が灰色で表示されるかは、my script、color2gray( http://www.fmwconcepts.com/imagemagick/color2gray/index.php)を参照してください。

関連する問題