2017-02-20 7 views
2

Используя 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); 
    } 

Results

ответ

2

Вот как это должно выглядеть. Рассмотрим это:

  • Белый цвет в RGB: 255, 255, 255
  • Красный цвет в RGB: 255, 0, 0
  • Зеленый цвет в RGB: 0, 255, 0
  • синий цвет в RGB: 0, 0, 255

Если вы разделили изображение на каналы, вы не сможете увидеть красный объект на белом фоне в красном канале (поскольку оба объекта и фон имеют значения 255), то же самое для других каналы.

Чтобы сделать ваш образец работы так, как вы ожидаете, вы должны заполнить фон черным цветом. Таким образом, каждый канал будет «содержать» только соответствующую цифру.

+0

Я не устанавливал фон в белый цвет, так почему он белый? В красном окне, почему я не вижу черный фон с белым кругом? – Brian

+0

На вашем исходном изображении фон белый, вот что я имел в виду. Вы не видите черный bg в красном окне, потому что на белом фоне красный канал имеет интенсивность 255 – alexisrozhkov

+0

А, я вижу. Благодарю. Я отредактировал исходное изображение, чтобы установить фон в черный цвет, и теперь я вижу то, что ожидаю. Благодаря! – Brian

 Смежные вопросы

  • Нет связанных вопросов^_^