我需要从灰度图像中创建一个"红色"图像.我正在使用此代码:
void build_red(const cv::Mat& in, cv::Mat& out) {
out = Mat::zeros(in.rows, in.cols, CV_8UC1);
Mat zeros = Mat::zeros(in.rows, in.cols, CV_8UC1);
Mat tmp;
in.convertTo(tmp, CV_8UC1);
vector<Mat> ch;
ch.push_back(zeros);
ch.push_back(zeros);
ch.push_back(tmp);
cout << "Using " << ch.size() << " channels" << endl;
merge(ch, out);
} // build_red
Run Code Online (Sandbox Code Playgroud)
有一些解释:
void build_red(const cv::Mat& in, cv::Mat& out) {
Run Code Online (Sandbox Code Playgroud)
in是输入矩阵,输出.
out = Mat::zeros(in.rows, in.cols, CV_8UC1);
Run Code Online (Sandbox Code Playgroud)
分配一些空间(可能没用,但是我尝试的一部分)
Mat zeros = Mat::zeros(in.rows, in.cols, CV_8UC1);
Mat tmp;
in.convertTo(tmp, CV_8UC1);
Run Code Online (Sandbox Code Playgroud)
创建一个大小相同的空矩阵,并将输入图像转换为单通道uchar.
vector<Mat> ch;
ch.push_back(zeros);
ch.push_back(zeros);
ch.push_back(tmp);
cout << "Using " << ch.size() << " channels" << endl;
merge(ch, out);
Run Code Online (Sandbox Code Playgroud)
创建一个包含三个通道的向量,然后将它们合并为"out".
但是,当我运行代码时,我收到以下消息:
Using 3 channels
Run Code Online (Sandbox Code Playgroud)
以及以下例外:
OpenCV Error: Bad number of channels (Source image must have 1, 3 or 4 channels)
in cvConvertImage, file /[...]/libs/OpenCV-2.4.0/modules/highgui/src/utils.cpp,
line 611
terminate called after throwing an instance of 'cv::Exception'
what(): /[...]/libs/OpenCV-2.4.0/modules/highgui/src/utils.cpp:611:
error: (-15) Source image must have 1, 3 or 4 channels in function cvConvertImage
Run Code Online (Sandbox Code Playgroud)
请你帮助我好吗?从我没有经验的观点来看,图像的类型是相同的,并且通道的数量是正确的.
Fro*_*oyo 22
如果您有灰度图像,为什么要转换图像?
只需为蓝色和绿色创建两个相同大小的空矩阵.
并且您已将输出矩阵定义为1通道矩阵.您的输出矩阵必须包含至少3个通道.(蓝色,绿色和红色).蓝色和绿色将完全为空,并且您将灰度图像设置为输出图像的红色通道.
#include <opencv2/highgui/highgui.hpp>
#include <stdio.h>
using namespace std;
using namespace cv;
int main()
{
Mat img, g, fin_img;
img = imread("Lenna.png",CV_LOAD_IMAGE_GRAYSCALE);
vector<Mat> channels;
g = Mat::zeros(Size(img.rows, img.cols), CV_8UC1);
channels.push_back(g);
channels.push_back(g);
channels.push_back(img);
merge(channels, fin_img);
imshow("img", fin_img);
waitKey(0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
52377 次 |
| 最近记录: |