Используя OpenCV 3.2.0 в Windows, я пытаюсь разбить изображение на его компонентные каналы. Я создал исходный файл изображения, используя 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
На вашем исходном изображении фон белый, вот что я имел в виду. Вы не видите черный bg в красном окне, потому что на белом фоне красный канал имеет интенсивность 255 – alexisrozhkov
А, я вижу. Благодарю. Я отредактировал исходное изображение, чтобы установить фон в черный цвет, и теперь я вижу то, что ожидаю. Благодаря! – Brian