我正在使用QT和OpenCV,我有这个需要提取的方块,但我需要使用从RGB转换到一个通道(基本上是RED).任何建议都将受到欢迎,请随时咨询哪些功能使用.提前致谢.
dan*_*ain 11
我认为cvSplit你正在寻找(docs).例如,您可以使用它将RGB分割为R,G和B:
/* assuming src is your source image */
CvSize s = cvSize(src->width, src->height);
int d = src->depth;
IplImage* R = cvCreateImage(s, d, 1);
IplImage* G = cvCreateImage(s, d, 1);
IplImage* B = cvCreateImage(s, d, 1);
cvSplit(src, R, G, B, null);
Run Code Online (Sandbox Code Playgroud)
请注意,您需要注意订购; 确保原始图像实际上是按R,G,B排序的(有一个很好的机会它是B,G,R).
Una*_*dra 10
由于这是标记qt我会给出一个C++答案.
// Create Windows
namedWindow("Red",1);
namedWindow("Green",1);
namedWindow("Blue",1);
// Create Matrices (make sure there is an image in input!)
Mat input;
Mat channel[3];
// The actual splitting.
split(input, channel);
// Display
imshow("Blue", channel[0]);
imshow("Green", channel[1]);
imshow("Red", channel[2]);
Run Code Online (Sandbox Code Playgroud)
在OpenCV 2.4.5上测试过
另一种方法是使用extractChannel:
cv::Mat channel;
//image is already loaded
cv::extractChannel(image, channel, 2);
Run Code Online (Sandbox Code Playgroud)
这将从中提取第三个通道image并将结果保存在channel. 也可以使用extractImageCOI和提取特定频道mixChannels。
| 归档时间: |
|
| 查看次数: |
23352 次 |
| 最近记录: |