赞
踩
在CV 人工智能模型中,通常是用3通道数据进行训练。在遇到4通道png图片时,需要预处理转换为3通道后再行处理。通常有两种方法:
1。 不保持颜色,只需要突显图案:
- std::vector<cv::Mat> channels(4);
- cv::split(oriImg, channels);
-
- // Merge BGR
- cv::Mat newImg;
- std::vector<cv::Mat> bgrChannels = { channels[2], channels[1], channels[0] };
- cv::merge(bgrChannels, newImg);
-
- // Inverting the alpha channel
- cv::Mat notAlpha;
- cv::bitwise_not(channels[3], notAlpha);
- cv::cvtColor(notAlpha, notAlpha, cv::COLOR_GRAY2BGR);
-
- // Apply the alpha mask to the BGR image
- cv::Mat maskedNewImg;
- cv::bitwise_and(newImg, newImg, maskedNewImg, channels[3]);
-
- // Check the mean color
- cv::Scalar meanColor = cv::mean(maskedNewImg);
- if (meanColor[0] <= 0.0 && meanColor[1] <= 0.0 && meanColor[2] <= 0.0) {
- maskedNewImg += notAlpha;
- }
- else {
- cv::bitwise_not(maskedNewImg, maskedNewImg);
- }
2. 保持原始色彩,只去掉alpha通道
- cv::Mat dst;
- oriImg.convertTo(dst, oriImg.type(), 1.0, 0.0); // 复制所有通
目标检测类任务,建议用方法2; OCR之类文字检测任务(只需要轮廓),建议用方法1.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。