我正在尝试按8UC1
缩放1.0f/255
类型的灰度图像,
通过以下操作
image.convertTo(image,CV_32F,1.0f/255,0); //convert and scale
在检查上述输出后,我发现所有值都太接近于零。例如,在值应为0.2784
的位置,我得到1.23417e-06
。
所以,我试着看看是否可以撤消缩放并获得输入,即将结果从上面乘以255,使用
cv::imwrite("undo_scaling.jpg",image*255); //rescale and write to disk
奇怪的是,输入图像可以重建。
我在哪里出现缩放操作错误?
修改
以下是我尝试预处理图像。这涉及以下步骤
我使用以下代码:
cv::Mat maskCrop(std::string imageName, std::string maskName)
{
cv::Mat image,mask,final_image;
image = cv::imread( imageName, CV_LOAD_IMAGE_GRAYSCALE);
mask = cv::imread( maskName,CV_LOAD_IMAGE_GRAYSCALE);
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 = dstImage(roi);
crop.convertTo(crop,CV_32F,1.0f/255,0);
return crop;
}
以下是输入图片:
以下是要应用于其上的蒙版: