2016-12-19 24 views
1

Matlabでは、2つの画像が重なり合って表示される可能性があり、2つの画像がどのように並んでいるかを示すのに非常に便利です。例えばopenCVで2つの画像を重ねて表示する

次のコードを見て:

img1 = zeros(100,100); 
img1(20:50, 10:40) = 255; 
img2 = zeros(100, 100); 
img2(35:65, 35:65) = 255; 
imshowpair(img1, img2); 

次のイメージ作成:

enter image description here

をそうするOpenCVのライブラリ内の任意の組み込み関数またはどのような方法があります(中C++)?

+0

これが役立つことがあります。http://docs.opencv.org/2.4/doc/tutorials/ core/adding_images/adding_images.html –

答えて

2

あなたは私が、私はそれが何をするかの完全な範囲を知りませんが、それは単に取っているように、この場合にはそれが見え​​を使用していない文書here

Mat img1 = Mat(100,100,CV_8UC3,Scalar::all(0)); 
Mat img2 = Mat(100,100,CV_8UC3,Scalar::all(0)); 
rectangle(img1, Rect(20,10,50,40), Scalar(0,255,0), -1); 
rectangle(img2, Rect(35,35,65,65), Scalar(255,0,255), -1); 
Mat result; 
addWeighted(img1, 0.5, img2, 0.5, 0.0, result); 
imshow("SO question", result); 
waitKey(10); 
+0

ありがとう、それは動作していますが、Matlabほど良くありません。 – BugReader

+0

どのようにしてそれは良くないのですか? – zeFrenchy

+0

私は、MATLABのようなイメージ表現の正確な方法を探していました。 – BugReader

2

としてaddWeightedを使用したいです

cv::Mat img1 = cv::Mat::zeros(100, 100, CV_8U); 
rectangle(img1, cv::Rect(10,20,30,30), 255, CV_FILLED); 

cv::Mat img2 = cv::Mat::zeros(100, 100, CV_8U); 
rectangle(img2, cv::Rect(35,35,30,30), 255, CV_FILLED); 

std::vector<cv::Mat> channels; 
cv::Mat imgPair; 

channels.push_back(img2); 
channels.push_back(img1); 
channels.push_back(img2); 

merge(channels, imgPair); 

imshow("imgPair", imgPair); 
cv::waitKey(0); 

出力:

01緑チャネルおよび青と赤のチャンネルである第2の画像としての第1の画像

0

これは、あなただけのデバッグモードでOpenCVのライブラリを使用したい時に働いているコードです:

void showImagePairs(const cv::Mat &img1, const cv::Mat &img2) { 

    std::vector<cv::Mat> channels; 
    cv::Mat imgPair; 

    channels.push_back(img2); 
    channels.push_back(img1); 
    channels.push_back(img2); 

    cv::merge(&channels[0], channels.size(), imgPair); 

    cv::imshow("imgPair", imgPair); 

    int c = cvWaitKey(40); 

} 
+0

私はそれが私の答えとどのように違うのか分かりませんが、それはうまくいきました。 – beaker

+0

違いは、コードを「デバッグ」モードまたは「リリース」モードで実行する場合です。あなたのコードを使用して私に例外を与えていた、私はopencvからのリリース.libファイルしか持っていない(私はリリースモードのためだけにライブラリをコンパイルした)! – BugReader

+0

これは本当に簡単な変更です。いくつかのフィードバックは歓迎されていたでしょう。それに失敗すると、いくつかの帰属が適切であったでしょう。 – beaker

関連する問題