gpt4 book ai didi

c++ - 如何在openCV中规范化图像?

转载 作者:太空宇宙 更新时间:2023-11-04 15:33:26 26 4
gpt4 key购买 nike

我是 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)??

我正在将 mat 图像转换为 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);

关于c++ - 如何在openCV中规范化图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42266742/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com