Just Do IT !

修改Compare.py报错时的解决方案

字数统计: 1.3k阅读时长: 5 min
2019/09/29 Share

错误:
在安装opevncv时会出现 ImportError: No module named cv2 的错误,找不到cv2的包。
解决:

这时候安装扩展包即可:

pip install opencv-python


错误:

1
2
3
4
5
6
Traceback (most recent call last):
File "data_generator.py", line 24, in <module>
import cv2
File "/usr/local/lib/python3.5/dist-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: libSM.so.6: cannot open shared object file: No such file or directory

解决方案:sudo apt-get install -y python-qt4


问题:
ValueError: Input 0 of node Reshape was passed int32 from batch_join:1 incompatible with expected int64.

解决:打开validate_on_lfw.py,找到这三个地方,data_flow_ops.FIFOQueue,labels_placeholder,control_placeholder,将他们的tf.int32全部换成tf.int64重新运行即可


错误:

1
2
SyntaxError:
Non-UTF-8 code starting with '\xb2' in file src/compare.py on line 58, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

SyntaxError: Non-ASCII character ‘\xe2’ in file意思是说,在文件中存在非ASCII字符;
ASCII是8位即一个字符,一共256个字符,随着计算机的发展,现在已经用到2个或者4个字符;
解决方案:

1
2
3
4
建议在文件头追加:
# -*- coding: cp936 -*-
或者
# -*- coding: utf-8 -*

文件头追加以后
报错:

SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb2 in position 0: invalid start byte

解决方案:
将该py文件用notepad++打开,转为utf-8编码


在这里插入图片描述
原因:
excel不能够有效识别出文件中的中文数据
解决方案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
加入encoding='utf-8-sig'就不会乱码了
with open("result.csv", "w",newline='',encoding='utf-8-sig') as csvfile:
writer = csv.writer(csvfile)


# first row
writer.writerow(["查询图像ID", "t底库中对应top1相似度的人脸ID", "相似度", "底库中对应top2相似度的人脸ID", "相似度", "底库中对应top3相似度的人脸ID", "相似度",
"底库中对应top4相似度的人脸ID", "相似度", "底库中对应top5相似度的人脸ID", "相似度", "底库中对应top6相似度的人脸ID", "相似度",
"底库中对应top7相似度的人脸ID", "相似度", "底库中对应top8相似度的人脸ID", "相似度", "底库中对应top9相似度的人脸ID", "相似度",
"底库中对应top10相似度的人脸ID", "相似度", "底库中对应top11相似度的人脸ID", "相似度", "底库中对应top12相似度的人脸ID", "相似度",
"底库中对应top13相似度的人脸ID", "相似度", "底库中对应top14相似度的人脸ID", "相似度", "底库中对应top15相似度的人脸ID", "相似度",
"底库中对应top16相似度的人脸ID", "相似度", "底库中对应top17相似度的人脸ID", "相似度", "底库中对应top18相似度的人脸ID", "相似度",
"底库中对应top19相似度的人脸ID", "相似度", "底库中对应top20相似度的人脸ID", "相似度", "底库中对应top21相似度的人脸ID", "相似度",
"底库中对应top22相似度的人脸ID", "相似度", "底库中对应top23相似度的人脸ID", "相似度", "底库中对应top24相似度的人脸ID", "相似度",
"底库中对应top25相似度的人脸ID", "相似度", "底库中对应top26相似度的人脸ID", "相似度", "底库中对应top27相似度的人脸ID", "相似度",
"底库中对应top28相似度的人脸ID", "相似度", "底库中对应top29相似度的人脸ID", "相似度", "底库中对应top30相似度的人脸ID", "相似度",
"底库中对应top31相似度的人脸ID", "相似度", "底库中对应top32相似度的人脸ID", "相似度", "底库中对应top33相似度的人脸ID", "相似度",
"底库中对应top34相似度的人脸ID", "相似度", "底库中对应top35相似度的人脸ID", "相似度", "底库中对应top36相似度的人脸ID", "相似度",
"底库中对应top37相似度的人脸ID", "相似度", "底库中对应top38相似度的人脸ID", "相似度", "底库中对应top39相似度的人脸ID", "相似度",
"底库中对应top40相似度的人脸ID", "相似度", "底库中对应top41相似度的人脸ID", "相似度", "底库中对应top42相似度的人脸ID", "相似度",
"底库中对应top43相似度的人脸ID", "相似度", "底库中对应top44相似度的人脸ID", "相似度", "底库中对应top45相似度的人脸ID", "相似度",
"底库中对应top46相似度的人脸ID", "相似度", "底库中对应top47相似度的人脸ID", "相似度", "底库中对应top48相似度的人脸ID", "相似度",
"底库中对应top49相似度的人脸ID", "相似度", "底库中对应top50相似度的人脸ID", "相似度"])
1
2
list_result.sort(key=lambda x:x[1])          # 根据第2个值排序
list_result.sort(key=operator.itemgetter(1)) # 根据第2个值排序

将元组里的字典按value值排序


输出形式为列表里的列表元组在这里插入图片描述
result = sorted(list_result.items(), key=lambda item: item[1])

在这里插入图片描述
修改为:

list_result.extend(images_distance)
...
list_result=sorted(list_result, key=lambda x:x[1])

报错:

TypeError: writerow() takes exactly one argument (2 given)
解决方案

1
2
3
4
5
with open("result.csv", "w",newline='',encoding='utf-8-sig') as csvfile:
writer = csv.writer(csvfile)

# writerows
writer.writerow([image_QUERY]+list_result[50])

改变为

1
2
3
4
5
with open("result.csv", "w",newline='',encoding='utf-8-sig') as csvfile:
writer = csv.writer(csvfile)

# writerows
writer.writerow([image_QUERY]+list_result[50])


错误:
python提示AttributeError: ‘NoneType’ object has no attribute ‘extend’

原因:

a=[]
b=[1,2,3,4]
a = a.extend(b)

报出a的类型变为了NoneType
extend会修改a本身,并且返回None。不能把返回值再赋值给a。
解决:

将a = a.extend(b)变为 a.extend(b)后问题解决

CATALOG