나는 openCV에서 완전히 새롭고 한 지점에 붙어 있습니다.
그레이 스케일 이미지가 있지만이 이미지를 정규화해야합니다. 예를 들어 : 일부 값과 각 인덱스를 포함하는 행렬이있을 수 있는 cv :: mat 이미지가 있습니다. 회색 이미지가 있으므로 인덱스 당 하나의 값만 포함 할 수 있습니다. 이제 각 값을 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);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다