我有一个logo的以下图像,这是一个带有alpha(透明度)通道的PNG文件。logo的格式非常常见,但以下是路透社的logo示例:
我在Python中使用OpenCV Canny edge detection将其转换为单色边缘模板,可用于匹配更大的图像:
import matplotlib.pyplot as plt
import cv2
img = cv2.imread(filepath) # Save above image and add location here
img_edged = cv2.Canny(img, 100, 200)
不幸的是,这是拾取了标志周围的矩形边界,它被alpha通道遮住了:
^{pr2}$我尝试过以下建议,在回复this question时提到,但它并不能解决这个问题:
img = cv2.imread(filepath, cv2.IMREAD_UNCHANGED)
(使用imshow确实可以使图像正确显示,但cv2.Canny仍会在徽标周围拾取隐藏的“框”。)
有没有一种预处理图像的方法来避免这个问题?在
对于示例中的简单徽标,其中值得查找的所有边都位于前景和背景之间,透明遮罩包含您需要的所有信息:
您可以查找
mask
的边缘,并找到路透社徽标中的所有边缘。我认为这对大多数的logo来说是正确的,但是有些可能更复杂。在问题已解决,使用在StackOverflow上其他地方发现的此函数(已丢失指向问题的链接-如果找到请添加注释):
上述问题可以解决如下:
^{pr2}$给予:
相关问题 更多 >
编程相关推荐