为什么彩图分出3个通道后,打印出来是3个灰图啊
opencv吧
全部回复
仅看楼主
level 1
这是源码以及运行结果,第一个是彩色原图,后面是分出来的3个通道
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char* argv[])
{
Mat img = imread("/home/su/code/opencv/g2.jfif", IMREAD_COLOR);
if (img.empty())
{
cout << -1 << "\n";
return -1;
}
imshow("bgr", img);
// Split the image into 3 single-channel images
Mat bgr[3];
split(img, bgr);
imshow("b", bgr[0]); // Blue channel
imshow("g", bgr[1]); // Green channel
imshow("r", bgr[2]); // Red channel
waitKey(0);
// Destroy all windows
destroyAllWindows();
return 0;
}
2024年01月15日 05点01分 1
level 11
等于分别取rgb,各自为256级灰度化,换个角度理解,3个结果图为:bbb,ggg,rrr的效果
2024年01月15日 06点01分 2
level 11
连续的bbb,ggg,rrr,各自依旧是bgr的含义,只是内容变了
2024年01月15日 06点01分 3
意思是说,后面3个图是把3原色的权值的相等了,就变成了亮度不一的灰图了是吗?那请问一下,如果我想实现把彩图分离3原色该怎么操作呢
2024年01月15日 07点01分
@菜菜不想卷 差不多这样理解。 没太理解你的目的
2024年01月15日 07点01分
@星玥灬 我就是想单独显示一个彩图中的三种颜色[笑尿]
2024年01月15日 07点01分
@菜菜不想卷 高级方法不会,土办法就是遍历行列所有点的颜色,如果不是红(255,0,0)绿(0,255,0)蓝(0,0,255),就改成白(255,255,255)即可,改成黑也行,随意了
2024年01月15日 15点01分
level 2
要想显示3个单色通道的颜色,应该把其他通道的色值设置为0而不是只用1个通道,1个通道默认是灰度图
2024年01月15日 12点01分 4
level 1
看到楼主的问题 我竟然一时间想不起来怎么回答 明明前2天刚学习到的 刚刚又写了写 确实是灰度图 我想最
正确的
答案就是楼上说的 你将图像由原先的多通道拆成了单通道 单通道只有可能是灰度图
2024年01月17日 14点01分 5
嗯嗯,这个我已经弄懂了
2024年01月18日 16点01分
@菜菜不想卷 有交流学习群吗
2024年01月18日 20点01分
@505278615 我也在找,还没找到
2024年01月19日 03点01分
level 3
def judge_color(img, mask, colors):
# TODO: 判断亮灯区域颜色
# 提示: mask内颜色均值可以使用cv2.mean()计算
mean = cv2.mean(img)
# 利用颜色距离判断颜色
Dist = np.empty((0,))
for color in colors:
Dist = np.append(Dist, np.sum(abs(mean-color) ** 2))
if Dist[0] < 20: #红色
color_flag = 0;
return mean, color_flag
2024年01月21日 14点01分 6
level 3
楼主可不可以告诉我倒数第五行这个代码怎么改[泪]
2024年01月21日 14点01分 7
抱歉,我是cpp环境下的,没用过Python,而且我也是新手小白[笑尿]
2024年02月20日 14点02分
1