gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:51:47 24 4
gpt4 key购买 nike

我正在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com