繁体   English   中英

OpenCV haar训练使用具有透明性的图像

[英]OpenCV haar training with images that have transparency

我将使用OpenCV的层叠训练功能。 但是在此之前,我需要准备训练数据。 我只是想知道如果我的阳性样本具有透明度,OpenCV是否可以支持它? 例如,例如,如果我希望分类器学习车辆的外观,那么我是否可以提供正样本图像,使车辆位于透明背景上?

如上面的评论中所述,仅在灰度图像上计算哈尔特征。 正如您提到的那样,当默认颜色0可能导致“滚轮”失去对比度时,这可能会带来问题。 您可能可以“标准化”透明颜色,而不是将其默认设置为0。

首先,您可以在所有4个通道(包括Alpha通道)中加载,然后使用Alpha通道将透明部分设置为某个值。

Python版本

I = cv2.imread("image.jpg", cv2.CV_LOAD_IMAGE_UNCHANGED)
alpha = I[:, :, 3]
G = cv2.cvtColor(I, cv2.COLOR_BGRA2GRAY)
G[alpha == 0] = 125  # Set transparent region to 125. Change to suit your needs.

C ++

vector<cv::Mat> channels;
cv::split(I, channels);
cv::Mat alpha = channels[3];
alpha = 255 - alpha;  // Invert mask so we select the transparent regions.
cv::Mat G = cv::cvtColor(I, cv::COLOR_BGRA2GRAY);
G.setTo(cv::Scalar(125), alpha);

请注意,我认为您可能需要注意上述某些操作,例如,加载带有alpha和“ alpha = 255-alpha;”的图像。 我相信它们仅在更高版本的OpenCV中可用。 我正在使用OpenCV 2.4.7,它可以工作(适用于python版本。我还没有尝试过C ++,但应该是相同的)。 因此,如果事情不起作用,请检查您的OpenCV版本是否支持这些操作。 如果没有,有办法解决它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM