问题和代码最后 我希望这个问题属于这里而不是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) 问题结束了
我想做的是:
现在,这里有一些代码:
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) 我有一个任务要用Java(仅在posivite编号上)编写quicksort(仅在posivite编号上)算法(除了Scanner,我不能使用任何导入),但是没有递归并且没有堆栈。
我有两个问题:
通过插入一些小的数组来实现排序是个好主意吗?如果是这样,则此代码中的N应该有多大:
if (arraySize < N)
insertionSort
else
quickSort
fi
Run Code Online (Sandbox Code Playgroud)我正在尝试从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))'无法翻译,将在本地进行评估.
在测试覆盖范围内,有什么方法可以排除私有方法?
在我的.coveragerc中,我尝试了:
[report]
exclude_lines =
__*
Run Code Online (Sandbox Code Playgroud)
但这似乎排除了诸如 long_method_name
是否有任何方法可以在不列出所有方法的情况下进行操作?
编辑
我希望测试中包含诸如__add__私有的类似语法的方法。