opencv - 在不使用 split() 函数的情况下拆分 BGR 矩阵

标签 opencv split bgr

我正在使用 2.4.6 版本的 Visual Studio 2012 和 Opencv 库进行编程。

有人可以帮我将 BGR 图像拆分为三个图像,每个 channel 一个图像吗?

我知道OpenCV中有split函数,但是它导致我一个未处理的异常,可能是因为我有一个带有32位库的64位处理器,或者可能是库的版本,所以我想知道如何迭代在不使用 split() 的 BGR 矩阵的像素值上。

提前致谢。

最佳答案

如果您不想使用 split() 那么您可以从源图像中读取每个 r,g,b 像素值并写入目标图像,并且应该是单 channel 。

#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;


int main( int argc, const char** argv ){

 Mat src = imread("ball.jpg", 1);
 Mat r(src.rows,src.cols,CV_8UC1);
 Mat g(src.rows,src.cols,CV_8UC1);
 Mat b(src.rows,src.cols,CV_8UC1);

 for(int i=0;i<src.rows;i++){
  for(int j=0;j<src.cols;j++){
    Vec3b pixel = src.at<Vec3b>(i, j);
    b.at<uchar>(i,j) = pixel[0];
    g.at<uchar>(i,j) = pixel[1];
    r.at<uchar>(i,j) = pixel[2];
   }
  }

  imshow("src", src);
  imshow("r", r);
  imshow("g", g);
  imshow("b", b);

  waitKey(0);
 }

关于opencv - 在不使用 split() 函数的情况下拆分 BGR 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18985124/

相关文章:

python - opencv - 将像素从 bgr 转换为 hsv

python - 在 Python 中使用 OpenCv 转换颜色空间

c - winapi - 24bpp 中的 CreateDIBitmap 是 BGR 而不是 RGB

image-processing - 识别被划掉的手写单词

java - 如何在 Java 中使用 openCV 的 VideoCapture 方法打开和处理 .mpeg 或 .avi 等视频文件

python - 如何在 Mac 上将 openCV 安装到 Enthought python 发行版中

javascript - 用于将电子邮件列表拆分为基本组件的 RegExp (JavaScript)

c++ - 访问 3 channel 矩阵的元素

javascript - 在 Javascript 中按大写字母拆分

java - 在每 4 个字符处拆分一个字符串?