小编MaL*_*223的帖子

平均面部算法

问题和代码最后 我希望这个问题属于这里而不是TCS的堆栈.我试图通过Turk和Pentland的"Eigenfaces for Recognition"中的算法.

在页74上可以阅读(左栏的最后一段):

让训练(...)集合的平均面由[*]定义

其中[*]是一个等式,表示平均面等于图像之和除以它的计数.为了使用这个equantion我使用OpenCV和numpy创建了python脚本.

在第75页上有图1.它应代表图1中的平均面部.(第74页)这就是我想要实现的目标.

作为一个面部集我使用Faces94的所有面孔.当我计算传统平均值(1/M*总和)时,结果如下所示:

在此输入图像描述

这远远超出预期,主要是因为那些奇怪的"斑点".但是,当我计算平均值时,实际上有更多的面孔(例如1 /(2*M)*总和),结果看起来更准确:

在此输入图像描述

我认为在转换int8 < - > int时存在一些问题,但我无法证明这一点.如果有人能发现代码有任何问题,请告诉我,即使它不是解决方案.

问题:我做错了什么/做什么来获得更好的结果.这是代码:

import numpy as np
import glob
import cv2
from cv2 import imread

dir = "../images/faces94/**/**.jpg"

files = list(glob.iglob(dir, recursive=True))
img = np.zeros(imread(files[0],0).shape)
img = img.astype('int')
for i in range(len(files)):
    img += imread(files[i],0).astype('int')

img = np.divide(img,len(files)*2) # HERE you can change it to np.divide(img,len(files)) in order to see bad result
img = np.mod(img,128)
img = img.astype(np.int8)

cv2.imshow("image", img)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)

python algorithm opencv numpy

13
推荐指数
1
解决办法
1226
查看次数

在注入的方法中访问私有变量 - python

问题结束了

我想做的是:

  1. 将属性注入已创建的对象并设置它而不是变量(成功)
  2. 注入方法(让我们称之为METHOD)来创建对象,对象之前没有这样的方法(成功)
  3. 使用self(成功)从属性调用public另一个方法
  4. 使用self(成功)从属性调用METHOD
  5. 使用self(失败)从METHOD获取私有类变量

现在,这里有一些代码:

from types import MethodType
def add_property(instance, name, method):
    cls = type(instance)
    cls = type(cls.__name__, (cls,), {})
    cls.__perinstance = True
    instance.__class__ = cls
    setattr(cls, name, property(method))

def add_variable(instance, name, init_value = 0 ):
    setattr(type(instance), name, init_value)

class Simulation:
    def __init__(self):
        self.finished = False
        self.__hidden = -10

    def someloop(self):
        while not self.finished:
            self.__private_method()

    def __private_method(self):
        pass 

    def public_method(self):
        pass

def mocked_method(self):
    print(type(self))
    print(self.__dict__)
    print(self.__hidden)

def finished(self):

    print("Execute finished",type(self))
    self.public_method()
    self.mocked_update()
    return True …
Run Code Online (Sandbox Code Playgroud)

python python-3.x

6
推荐指数
1
解决办法
407
查看次数

创建快速排序而无需递归和堆栈

我有一个任务要用Java(仅在posivite编号上)编写quicksort(仅在posivite编号上)算法(除了Scanner,我不能使用任何导入),但是没有递归并且没有堆栈。
我有两个问题:

  1. 我确实使用堆栈和递归版本进行迭代迭代快速排序,但是我无法想象没有它怎么做。我听说过一些“就地”实施,但是我真的不明白—它可以解决我的问题吗?
    如果有人可以向我展示一种实现方法(如果可以的话,请不要发布实现,我只是想让它不要复制别人的代码)或推荐我可以找到它的书(或类似问题),我将不胜感激。
  2. 通过插入一些小的数组来实现排序是个好主意吗?如果是这样,则此代码中的N应该有多大:

    if (arraySize < N)
        insertionSort
    else 
        quickSort
    fi
    
    Run Code Online (Sandbox Code Playgroud)

java quicksort

5
推荐指数
1
解决办法
9629
查看次数

LINQ表达式未转换为SQL

我正在尝试从LINQ实现一个编译的SQL查询,它将检查query数据库中是否有三列的子串(不区分大小写).

我正在使用.NET Core 1.1

我想出的查询如下:

users.Select(u => new
  {
    User = u,
    query = u.FirstName.ToLower() + u.LastName.ToLower() + u.Email.ToLower()
  }).Where(x => x.query.Contains(query))
Run Code Online (Sandbox Code Playgroud)

但是在查看调试信息时,我收到了这个警告:

LINQ表达式'(([u] .FirstName.ToLower()+ [u] .LastName.ToLower())+ [u] .Email.ToLower()).包含(__ query_0)'无法翻译,将会是在当地评估.

我试过的第二个查询:

 users.Where(x => u.FirstName.ToLower().Contains(query) || u.LastName.ToLower().Contains(query) || u.Email.ToLower().Contains(query))
Run Code Online (Sandbox Code Playgroud)

但它给了我完全相同的警告.

为什么会这样?我正在寻找类似的东西:

SELECT * FROM USERS WHERE FirstName LIKE query OR LastName LIKE query OR Email LIKE query
Run Code Online (Sandbox Code Playgroud)

UPDATE

我又做了一个实验:

    users.Where(u =>
    u.FirstName.Contains(query) ||
    u.LastName.Contains(query) ||
    u.Email.Contains(query));
Run Code Online (Sandbox Code Playgroud)

这也导致了

LINQ表达式'(([u] .FirstName.Contains(__ query_0)OrElse [u] .LastName.Contains(__ query_1))OrElse [u] .Email.Contains(__ query_2))'无法翻译,将在本地进行评估.

c# linq entity-framework entity-framework-core .net-core

4
推荐指数
1
解决办法
3500
查看次数

在承保范围内排除私人方法

在测试覆盖范围内,有什么方法可以排除私有方法?

在我的.coveragerc中,我尝试了:

[report]
exclude_lines = 
    __*
Run Code Online (Sandbox Code Playgroud)

但这似乎排除了诸如 long_method_name

是否有任何方法可以在不列出所有方法的情况下进行操作?

编辑

我希望测试中包含诸如__add__私有的类似语法的方法。

python coverage.py

2
推荐指数
1
解决办法
967
查看次数