在OpenCV中将灰度图像转换为单色
Convert grayscale image to single color in OpenCV
我想知道是否有办法将灰度图像转换为一种彩色图像?就像我有一个灰度图像,我想将其转换为蓝色阴影?这在OpenCV中可能吗?
谢谢!
根据opencv社区的回答,您应该自己创建一个3通道图像。
Mat empty_image = Mat::zeros(src.rows, src.cols, CV_8UC1);//initial empty layer
Mat result_blue(src.rows, src.cols, CV_8UC3); //initial blue result
Mat in1[] = { ***GRAYINPUT***, empty_image, empty_image }; //construct 3 layer Matrix
int from_to1[] = { 0,0, 1,1, 2,2 };
mixChannels( in1, 3, &result_blue, 1, from_to1, 3 ); //combine image
之后,您可以获得蓝色通道图像。通常,opencv 中彩色图像的蓝色通道是第一层(因为他们将 3 个通道作为 BGR(。
顺便说一句,如果要使用复制每个像素方法,则可以初始一个空图像
Mat result_blue(src.rows, src.cols, CV_8UC3); //blue result
for (int i =0; i<src.rows; i++)
for (int j=0; j<src.cols; j++){
Vec3b temp = result_blue.at<Vec3b>(Point(i,j));//get each pixel
temp[0] = gray.at<uchar>(i,j); //give value to blue channel
result_blue.at<Vec3b>(Point(x,y)) = temp; //copy back to img
}
但是,由于有两个循环,因此需要更长的时间!
灰度图像通常只是一个维度。通常,如果我想将灰度图像传递到接受RGB(三维(的函数中,我会复制矩阵3次以创建MxNx3矩阵。如果您只想使用蓝色通道,只需在第 1 维和第 2 维中连接零的 MxN,同时将原始灰度值放在第 3 维中。
要实现此目的,您基本上只需要遍历灰度图像中的所有像素并将值映射到颜色范围。这是伪代码:
grayImage:imageObject;
tintedImage:imageObject;
//Define your color tint here
myColorR:Int = 115;
myColorG:Int = 186;
myColorB:Int = 241;
for(int i=0; i<imagePixelArray.length; i++){
float pixelBrightness = grayImage.getPixelValueAt(i)/255;
int pixelColorR = myColorR*pixelBrightness;
int pixelColorG = myColorG*pixelBrightness;
int pixelColorB = myColorB*pixelBrightness;
tintedImage.setPixelColorAt(i, pixelColorR, pixelColorG, pixelColorB);
}
希望对您有所帮助!
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 使用 stbi_write_png,如何将 0 和 1 的矩形字节数组转换为单色 png 文件?
- 将 24 位".bmp"图像转换为黑白/单色图像的可能算法是什么?
- 在OpenCV中将灰度图像转换为单色