如何在OpenCV中标准化图像
How to normalize image in openCV?
我在opencv中是全新的,并且卡在某一时刻。
我有一个灰度图像,但我需要标准化此图像。例如:我有一个 cv :: mat 图像,它可能具有包含一些值和每个索引的矩阵。由于我有灰色图像,因此每个索引可能只包含1个值。现在,我需要将每个值除以255。
C 中的OPENCV中是否有任何方法或功能?对于这种情况,我相信我要使用的方法在OpenCV中称为归一化?
cv::Mat originalMat = [OSInference cvMatFromUIImage:imgBeforeProccessing];
cv::Mat img2;
cv::cvtColor(originalMat, img2,CV_BGR2GRAY);
cv::resize(img2, img2, cv::Size(128, 128), 0, 0, CV_INTER_CUBIC);
cv::Mat img3;
现在如何归一化(这意味着将矩阵中的每个值除以255)??
我将垫子图像转换为iOS图像如下:
+ (UIImage *)UIImageFromCVMat:(cv::Mat)cvMat{
NSData *data = [NSData dataWithBytes:cvMat.data length:cvMat.elemSize()*cvMat.total()];
CGColorSpaceRef colorspace;
if (cvMat.elemSize() == 1) {
colorspace = CGColorSpaceCreateDeviceGray();
}else{
colorspace = CGColorSpaceCreateDeviceRGB();
}
CGDataProviderRef provider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data);
// Create CGImage from cv::Mat
CGImageRef imageRef = CGImageCreate(cvMat.cols, cvMat.rows, 8, 8 * cvMat.elemSize(), cvMat.step[0], colorspace, kCGImageAlphaNone | kCGBitmapByteOrderDefault, provider, NULL, false, kCGRenderingIntentDefault);
// get uiimage from cgimage
UIImage *finalImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
CGDataProviderRelease(provider);
CGColorSpaceRelease(colorspace);
return finalImage;
}
openCV具有一个函数,正是您想要的。它称为 convertTo
。
cv::Mat img3;
img2.convertTo(img3, CV_32F, 1.0 / 255, 0);
为了正常化的cv ::垫子,您可以使用cv ::正常化。我编写一些代码来帮助您。
uchar data[] = {0, 63, 127, 255};
cv::Mat im(2, 2, CV_8UC1, data), output;
# this what you need 0 -> min value after norm
# 1 -> max value after nom
# cv::NORM_MINMAX normalize for min and max values
cv::normalize(im, output, 0, 1, cv::NORM_MINMAX);
std::cout
<< im << 'n'
<< output << 'n';
#==================================================
# output
[ 0, 63;
127, 255]
[ 0, 0;
0, 1]
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 彩色图像的卤化物处理平均值
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 重新定位图像时如何前进到下一个内存块
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 为什么 BMP 图像上的 imwrite 会卡住/不返回?
- Gstreamer:每 5 秒使用多文件墨水保存图像/jpeg
- 如何使用CImg打开图像?
- 是否有一种标准化的方法通过TCP/IP网络发送JPG图像
- 如何在OpenCV中标准化图像