2
WindowsでOpenCV 3.2.0を使用しているので、イメージをコンポーネントチャンネルに分割しようとしています。 MS Paint(24ビットBMPとして保存)を使用してソースイメージファイルを作成し、各オブジェクトを純粋な色に設定しました。結果からわかるように、各チャンネルにはそのチャンネルのデータがすべて含まれています。よくわかりません。緑の画像で緑のデータだけを取得するにはどうすればいいですか?これは、それがどのように見えるべきかであるRGBチャンネルを分割できません
#define _CRT_SECURE_NO_WARNINGS
#include <Windows.h>
#include <string>
#include <cstdlib>
#include "opencv2\opencv.hpp"
using namespace std;
using namespace cv;
const string source_window = "Source";
const string red_window = "Red";
const string green_window = "Green";
const string blue_window = "Blue";
int main (int Argc, char** Argv)
{
Mat src = imread ("Test.bmp");
vector<Mat> rgb;
namedWindow (source_window, WINDOW_AUTOSIZE);
namedWindow (red_window, WINDOW_AUTOSIZE);
namedWindow (green_window, WINDOW_AUTOSIZE);
namedWindow (blue_window, WINDOW_AUTOSIZE);
imshow (source_window, src);
cv::split (src, rgb);
imshow (red_window, rgb [2]);
imshow (green_window, rgb [1]);
imshow (blue_window, rgb [0]);
waitKey (0);
}
背景を白に設定していないので、なぜ白ですか?赤い窓では、黒い背景に白い円が表示されます。 – Brian
あなたのソースイメージには、背景が白です。それは私が言及したものです。白い背景のため赤いチャンネルが255の強さを持っているので、あなたは赤いウィンドウで黒いbgを見ません。 – alexisrozhkov
ああ、そうです。ありがとう。バックグラウンドを黒に設定するためにソースイメージを編集しましたが、今は私が期待しているものを見ています。ありがとう! – Brian