我有大量的航拍图像。他们中的一些人将镜片部分遮挡。例如:
和
我尝试使用OpenCV自动检测哪些图像具有此功能。我最初的目的是检查多个图像中有多少图像是黑色的。但希望有一种聪明的方法可以单独为图像做这件事。
答案 0 :(得分:1)
一个想法是确定图像上有多少个黑色像素。为此,我们可以创建一个空白蒙版,然后使用table1 <- c()
for(i in 1:100) {
for(z in 1:100){
table1 <- rbind(table1, c(i, z, i * z))
}
}
将所有检测到的黑色像素着色为白色。从这里,我们可以用np.where
计算蒙版上白色像素的数量,然后计算像素百分比。如果计算出的百分比大于某个阈值(例如2%),则图像会被部分遮挡。结果如下:
输入图像cv2.countNonZero
掩码
->
Pixel Percentage: 3.33%
Occluded: True
代码
Pixel Percentage: 2.54%
Occluded: True
答案 1 :(得分:0)
我建议使用某种黑色像素的填充算法。通过检查大的(连接的)黑色区域,您可以识别这些区域。这种方法的优势在于您可以调整参数以获得积极性(例如,何时像素标记为黑色,连接区域必须有多大等)。