如何检测rgb图像格式是否为灰度? 具有OpenCV C++的图像处理程序。 在我的程序中,两条预处理路径分别用于两种类型的灰度图像和彩色图像。 但有时我得到的图像是灰度的,但以RGB格式存储意味着当外观图像是灰度的,但这幅图像有3个通道
如何检测rgb图像格式是否为彩色或灰色 几乎所有的灰色都有如何检测rgb图像格式是否为灰度? 具有OpenCV C++的图像处理程序。 在我的程序中,两条预处理路径分别用于两种类型的灰度图像和彩色图像。 但有时我得到的图像是灰度的,但以RGB格式存储意味着当外观图像是灰度的,但这幅图像有3个通道,c++,opencv,image-processing,C++,Opencv,Image Processing,如何检测rgb图像格式是否为彩色或灰色 几乎所有的灰色都有红色==绿色==蓝色。只需检查红绿色和蓝色值是否为+10或-10就可以了 如果您希望使用特定形式的灰色,您可以查看可以形成的相关灰色颜色,或者在RGB输入门户上自己进行实验。您可以检查像素,并检查它们的R、G和B值是否每次都相同 cv::Mat image; // your image with type CV_8UC3 bool grayscale = true; for(int i = 0; i < image.rows; i
红色==绿色==蓝色
。只需检查红绿色和蓝色值是否为+10或-10
就可以了
如果您希望使用特定形式的灰色,您可以查看可以形成的相关灰色颜色,或者在RGB输入门户上自己进行实验。您可以检查像素,并检查它们的R、G和B值是否每次都相同
cv::Mat image; // your image with type CV_8UC3
bool grayscale = true;
for(int i = 0; i < image.rows; i++) {
cv::Vec3b* ptr = image.ptr<cv::Vec3b>(i);
for(int j = 0; j < image.cols; j++) {
if(!(ptr[j][0] == ptr[j][1] && ptr[j][0] == ptr[j][2])) {
grayscale = false;
break;
}
}
if(!grayscale)
break;
}
cv::Mat image;//您的图像类型为CV_8UC3
布尔灰度=真;
对于(int i=0;i
由于灰色被定义为没有饱和度,因此您可以将其转换为具有饱和度分量(例如HSL)的颜色空间,并检查饱和度通道是否为零,或其最大值是否非常小。