【发布时间】:2020-03-19 15:03:08
【问题描述】:
我有想要分类的建筑物的图片,我想摆脱天空,因为我认为它正在弄乱我的分类器。我知道 OpenCV 有一个名为 inRange 的函数,它接收图像并将不在您提供的两种颜色范围范围内的所有内容涂黑。我想知道是否有一个功能正好相反。或者另一种方式我可以完成我想要的。
谢谢!
【问题讨论】:
标签: python-3.x opencv machine-learning
我有想要分类的建筑物的图片,我想摆脱天空,因为我认为它正在弄乱我的分类器。我知道 OpenCV 有一个名为 inRange 的函数,它接收图像并将不在您提供的两种颜色范围范围内的所有内容涂黑。我想知道是否有一个功能正好相反。或者另一种方式我可以完成我想要的。
谢谢!
【问题讨论】:
标签: python-3.x opencv machine-learning
cv2.InRange 创建一个遮罩,这基本上意味着它创建一个相同大小的图像,其中范围内的像素值为 255,范围外的值为 0。
如果你想得到相反的结果,你可以获取cv2.inRange 的输出并执行bitwise_not:
https://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#bitwise-not
如果您想用它来遮盖原始图像中的像素,您可以使用bitwise_and:
https://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#bitwise-and
所以我会这样做:
mask = cv2.inRange(img, (255, 0, 0), (100, 0, 0)) # modify your thresholds
inv_mask = cv2.bitwise_not(mask)
no_sky = cv2.bitwise_and(img, inv_mask)
【讨论】: