0
以下是我对图像进行预处理的尝试。这涉及到以下步骤OpenCV返回黑白图像而不是灰度
- 应用蒙
- 作物的结果
- 最后,当我试图去从步骤3回到步骤2的255
缩放像素值,我得到一张黑白图像,而不是一张灰度图像。 以下是我的代码进行预处理
cv::Mat maskCrop(std::string imageName, std::string maskName)
{
cv::Mat image,mask;
image = cv::imread(imageName, CV_LOAD_IMAGE_GRAYSCALE);
mask = cv::imread(maskName,CV_LOAD_IMAGE_GRAYSCALE);
cv::Mat final_image;
cv::resize(image, image, mask.size()); // make the size of mask and image same
cv::bitwise_and(image, mask, final_image); //Apply mask
// define rectangular window for cropping
int offset_x = 1250; // top left corner, for cropping
int offset_y = 1550;
cv::Rect roi;
roi.x = offset_x;
roi.y = offset_y;
roi.width = 550;
roi.height = 650;
// Crop the original image to the defined ROI //
cv::Mat crop = final_image(roi);
//scale the image
float beta = 1.0/255.0;
crop *=beta; // divide the max pixel vaue i.e. 255
//Examinig whether scaling can be undone !!!!
cv::imwrite("/home/dpk/Desktop/ip-rings/gray_image.jpg",crop*255);
return crop;
}
以下是我得到的输出,当我试图通过255撤消缩放(步骤3)
以下是预期输出
是什么原因导致的图像是黑色和WH迭代而不是灰度?
数据类型的'crop'矩阵的是无符号的8位整数。将其乘以浮点标量不会改变这一点。 –