Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenCV Python中的模糊方法类型?_Python_Opencv - Fatal编程技术网

OpenCV Python中的模糊方法类型?

OpenCV Python中的模糊方法类型?,python,opencv,Python,Opencv,我正在创建一个深度学习模型,用于检测图像中的模糊对象 为此,我需要创建一个模糊对象的数据集。我想用OpenCV自动完成它 所以我想应用所有的方法来创建一个好的数据集。到目前为止,我只找到了以下方法来模糊Python中的某些内容 我也可以使用OpenCV以外的其他库,如果您有建议的话 def blurface(img): num = random.randint(1,4) if num == 1: img = cv2.GaussianBlur(img, (rand

我正在创建一个深度学习模型,用于检测图像中的模糊对象

为此,我需要创建一个模糊对象的数据集。我想用OpenCV自动完成它

所以我想应用所有的方法来创建一个好的数据集。到目前为止,我只找到了以下方法来模糊Python中的某些内容

我也可以使用OpenCV以外的其他库,如果您有建议的话

def blurface(img):
    num = random.randint(1,4)

    if num == 1:
        img = cv2.GaussianBlur(img, (random.randrange(111, 190+1, 2),random.randrange(111, 190+1, 2)), random.randrange(111, 190+1, 2))
    if num == 2:
        img = cv2.medianBlur(img, random.randrange(71, 277+1, 2)) 
    if num == 3:
        img = cv2.blur(img,(random.randint(90,190),random.randint(90,190)))
    if num == 4:
        imgshape = img.shape
        img = cv2.resize(img,(random.randint(4,9),random.randint(4,9)))
        img = cv2.resize(img,(int(imgshape[1]),int(imgshape[0])),interpolation=cv2.INTER_NEAREST)

    return img
目前,我使用4种方法来模糊

1.)高斯模糊、中间模糊、模糊、减小大小和增大大小模糊


另外,如何在不同的形状中进行模糊?圆形、椭圆形、随机形状等?

您应该使用拉普拉斯方差进行模糊检测,如下所述:


它比应用深度学习更快、更容易。

首先,如何使用深度学习检测模糊区域

  • 您可以保留两个类,一个只有不同类型的模糊图像,另一个没有任何模糊。这是一个简单的分类问题,应该会给你一个很好的准确性。一个稍微复杂的变化是,模型还将分类使用哪种模糊

  • 对于每个图像,您都试图预测实际的模糊区域。这是一个本地化问题,更难建模。您需要使用类似Yolo的对象检测模型创建数据集

  • 我认为问题在于你的深度学习模型,因为检测模糊区域应该不是一个非常困难的问题。我建议你用模糊的方法来检查你的深度学习模式是否有效

    至于其他形状,

    import cv2
    import matplotlib.pyplot as plt
    import numpy as np
    
    img = cv2.imread('image.jpg')
    h, w, c = img.shape
    
    plt.imshow(img)
    plt.show()
    
    c_mask = np.zeros((h,w), np.uint8)
    cv2.circle(c_mask,(w//2,h//2),100,1,thickness=-1)
    
    mask = cv2.bitwise_and(img, img, mask=c_mask)
    
    plt.imshow(mask)
    plt.show()
    
    img_mask = img - mask
    
    plt.imshow(img_mask)
    plt.show()
    
    blur = cv2.blur(img,(17, 17))
    
    
    plt.imshow(blur)
    plt.show()
    
    mask2 = cv2.bitwise_and(blur, blur, mask=c_mask)
    
    plt.imshow(mask2)
    plt.show()
    
    final_img = img_mask + mask2
    
    print(np.max(final_img))
    
    plt.imshow(final_img)
    plt.show()
    
    可以更改几何对象(遮罩)以获得更多形状


    但它无法检测模糊的位置,是吗?大概我对数学一窍不通……谢谢,我也会试试这个,只有在脸部模糊的情况下。@Rahul将你的图像分割成多个部分,并分别检查每个部分。或者检测人脸并只检查那些区域。我试过这个。工作不太好…很多边缘案例,似乎无法手动修复或不值得,深度学习模型可以工作。但有很多过滤器,人们使用photoshop等…我想创建一个好的数据集。它是一个简单的分类数据集吗?或者你也打算增加本地化?我不在乎本地化。但我想知道,图像是否有意模糊。所以我想,本地化会有所帮助