检测图像是否是卡通或者是否是OpenCV的真人

时间:2014-03-08 03:05:18

标签: python opencv

我试图检测图像是否是卡通片或是否是真人。我搜索了谷歌并实施了两种提到的算法,但两者都无法准确预测图像是由相机拍摄的人还是动画片/动漫角色

这是我的剧本:

detectCartoon1使用拉普拉斯算法来检测图像是否是人。 (我认为相机镜头的质量会降低,因此这很容易实现)。但它失败了 - 它给了我很多误报。

detectCartoon2使用其他人提到的堆栈溢出方法。它表明,在我们将过滤器应用于漫画之后,不会有太多变化;但如果我们应用从较低质量的相机/网络摄像头拍摄的照片,将会有很多变化。再次,大量的误报。

我一直在谷歌寻找其他方法 - 或试图想出我自己的方法,但我想不出任何事情。我非常感谢有关这个主题的任何帮助。

谢谢!

import cv2
import numpy

def detectCartoon1(imagePath):
    img_before = cv2.imread(imagePath)
    img_after = 0    

    gray = cv2.GaussianBlur(img_before, (3, 3), 0, 0, cv2.BORDER_DEFAULT)
    gray = cv2.cvtColor(gray, cv2.COLOR_BGR2GRAY)
    img_after = cv2.Laplacian(gray, cv2.CV_64F)
    img_after = cv2.convertScaleAbs(img_after)

    return numpy.mean(img_after)    

def detectCartoon2(imagePath):
    img_before = cv2.imread(imagePath)
    img_after = 0

    for i in range(1, 31, 2):
        img_after = cv2.bilateralFilter(img_before, i, i*2, i/2)

    img_after = cv2.cvtColor(img_after, cv2.COLOR_HSV2BGR_FULL)
    img_before = cv2.cvtColor(img_before, cv2.COLOR_HSV2BGR_FULL)

    return numpy.mean(img_before - img_after)

from os import listdir

for img in listdir('Save'):
    img = 'Save\\' + img
    dc1 = detectCartoon1(img)
    dc2 = detectCartoon2(img)
    print('Img: ' + img + ' detectCartoon1: ' + str(dc1) + ' detectCartoon2: ' + str(dc2))

1 个答案:

答案 0 :(得分:1)

以下是关于您的问题的好文章:http://www.uv.es/~tzveta/invwork.pdf