gpt4 book ai didi

c++ - 如何使用 OpenCV 检测大量白色像素的区域?

转载 作者:IT老高 更新时间:2023-10-28 22:23:57 26 4
gpt4 key购买 nike

我想检测图像中的 Logo 以将其删除。我有一个想法是寻找具有大量像素然后删除的对象。另一个想法是遍历所有白色像素(我已经反转了我的图像)并寻找形成大区域的像素,然后删除该区域。有没有比这个更好的算法。此外,OpenCV 中的哪些方法可以帮助我检测大像素数的对象。

最佳答案

我有办法做到这一点。我不知道这种方法是否适用于所有人,但在这里效果很好。

下面是代码(Python):

首先将图像转换为灰度,调整图像大小,应用阈值,并制作与调整大小的灰度图像相同大小和类型的蒙版图像。 (蒙版图像只是黑色图像)

import cv2
import numpy as np

img = cv2.imread('bus.png')
img = cv2.resize(img,(400,500))
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,gray = cv2.threshold(gray,127,255,0)
gray2 = gray.copy()
mask = np.zeros(gray.shape,np.uint8)

现在在阈值图像中找到轮廓。过滤 500 到 5000 之间区域的轮廓。它很可能是一个大的白色 Blob ,显然不是字母。 (记住,这个区域是这个图像的特殊区域。我不知道你的其他图像。你必须自己找到它)。现在在填充了白色的蒙版图像上绘制此轮廓。

contours, hier = cv2.findContours(gray,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
if 200<cv2.contourArea(cnt)<5000:
cv2.drawContours(img,[cnt],0,(0,255,0),2)
cv2.drawContours(mask,[cnt],0,255,-1)

下面是检测到的轮廓图:

detected contour drawn on the input image

接下来是蒙版图片:

New mask image

现在您使用 cv2.bitwise_not 函数反转图像。您可以选择在我们提供蒙版图像的地方提供蒙版,以便该函数仅在输入图像中蒙版图像中有白色的区域上运行。

cv2.bitwise_not(gray2,gray2,mask)

最后显示图片:

cv2.imshow('IMG',gray2)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果如下:

enter image description here


注意:

上述方法用于将“ORANGE”保留在白色方 block 中。这就是为什么存在一些文物的原因。如果你也不想要那个橙色,它会更准确。

只需找到区域过滤轮廓的边界矩形并绘制填充黑色的矩形。

代码:

import cv2
import numpy as np

img = cv2.imread('bus.png')
img = cv2.resize(img,(400,500))
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,gray = cv2.threshold(gray,127,255,0)
gray2 = gray.copy()

contours, hier = cv2.findContours(gray,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
if 200<cv2.contourArea(cnt)<5000:
(x,y,w,h) = cv2.boundingRect(cnt)
cv2.rectangle(gray2,(x,y),(x+w,y+h),0,-1)

cv2.imshow('IMG',gray2)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果:

检测到的边界矩形:

enter image description here

然后用黑色填充这些矩形:

enter image description here

它比以前的要好,当然如果你不想要“ORANGE”)

关于c++ - 如何使用 OpenCV 检测大量白色像素的区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10262600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com