Python2.7.13,Anaconda环境下Opencv2编程bug不会修改,求教
16lz
2021-01-22
在IPython环境运行时,出现如下错误:
错误出在这个函数和函数调用上
defcal_hash_code(cur_gray):
s_img=cv2.resize(cur_gray,dsize=(8,8))
img_mean=cv2.mean(s_img)#求8*8位平均值得到4维tuple
returns_img>img_mean[0]#返回为1,0值的8*8矩阵,哈希阵
hash_original=cal_hash_code(gray_original)#计算8*8哈希阵
错误如下:
File"E:/My_Project/image_sim_PHA/my_pha.py", line78,in<module>
hash_original=cal_phash_code(gray_original)#计算8*8哈希阵
File"E:/My_Project/image_sim_PHA/my_pha.py",line43,incal_phash_code
m_img=cv2.resize(cur_gray,dsize=(32,32))
error:C:\build\master_winpack-bindings-win64-vc14-static\opencv\modules\imgproc\src\imgwarp.cpp:3492:error:(-215)ssize.width>0&&ssize.height>0infunctioncv::resize
但是我在交互式中一行行检查了程序中的每一句语句,都能通过,但是在程序中就是报错,很崩溃,求大神指教。代码如下
#感知哈希算法计算相似图片
"""
importcv2
importnumpyasnp
fromglobimportiglob
importsys
reload(sys)
sys.setdefaultencoding("utf-8")
defload_image(path):
#初始化图像形成灰度图像
image=cv2.imread(path)
gray=cv2.imread(path,0)
#gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
returnimage,gray
defshow_image(image):
cv2.imshow('Theimage',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
"""
defshow_image(image,flag=0):
ifflag==0:
cv2.imshow('Theimagetobesearched',image)
elifflag==1:
cv2.imshow('Theresult',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
"""
defcal_hash_code(cur_gray):
s_img=cv2.resize(cur_gray,dsize=(8,8))
img_mean=cv2.mean(s_img)#求8*8位平均值得到4维tuple
returns_img>img_mean[0]#返回为1,0值的8*8矩阵,哈希阵
defcal_phash_code(cur_gray):
#将图片缩小至32*32
m_img=cv2.resize(cur_gray,dsize=(32,32))
#浮点型用于计算
m_img=np.float32(m_img)
#离散余弦变换,得到dct系数矩阵
img_dct=cv2.dct(m_img)#得到频率域结果
img_mean=cv2.mean(img_dct[0:8,0:8])#只截取左上角的一部分8*8
#返回一个8*8bool矩阵
returnimg_dct[0:8,0:8]>img_mean[0]
defcal_dhash_code(cur_gray):
#dsize=(width,height)
m_img=cv2.resize(cur_gray,dsize=(9,8))
m_img=np.int8(m_img)#其中白色值255全部转化为-1
#得到8*8差值矩阵
m_img_diff=m_img[:,:-1]-m_img[:,1:]
returnm_img_diff>0#得到图像的差值哈希阵
defcal_hamming_distance(model_hash_code,search_hash_code):
#返回不相同的个数
diff=np.uint8(model_hash_code-search_hash_code)
returncv2.countNonZero(diff)
if__name__=='__main__':
#计时
e1=cv2.getTickCount()
#输入检索图片路径,并读取,显示
path_original=raw_input("Pleaseinputthepathoftheimagetobesearched:(E:/CuiChengyu/patentimages/patentimages/CN201630142426.0.jpg):")
#读取路径下每一个文件的路径
paths=iglob(r'E:/CuiChengyu/patentimages/patentimages/01/*')
#哈希参数调节
min_dis=input("PleaseinputthemindistanceofPHA(1~10):")
image_original,gray_original=load_image(path_original)#加载原图像
hash_original=cal_hash_code(gray_original)#计算8*8哈希阵
#计数
frame_count=0
#搜索结果列表
results=[]
forpath_targetinpaths:
frame_count+=1
image_target,gray_target=load_image(path_target)#加载要搜索的图像
hash_target=cal_hash_code(gray_target)#计算8*8哈希阵
distance=cal_hamming_distance(hash_original,hash_target)
ifdistance<min_dis:
results.append((distance,image_target))
#排序
sorted_results=sorted(results,cmp=lambdax,y:cmp(x[0],y[0]))
#计时
e2=cv2.getTickCount()
f=cv2.getTickFrequency()
time=(e2-e1)/f
print"Thewholeprocesscosts:",time
show_image(image_original)#显示原图像
foriinsorted_results:
show_image(i[1])#显示搜索结果图像
你把那个大学,长宽打印出来看看,到底是多少啊,要求》0
错误出在这个函数和函数调用上
defcal_hash_code(cur_gray):
s_img=cv2.resize(cur_gray,dsize=(8,8))
img_mean=cv2.mean(s_img)#求8*8位平均值得到4维tuple
returns_img>img_mean[0]#返回为1,0值的8*8矩阵,哈希阵
hash_original=cal_hash_code(gray_original)#计算8*8哈希阵
错误如下:
File"E:/My_Project/image_sim_PHA/my_pha.py", line78,in<module>
hash_original=cal_phash_code(gray_original)#计算8*8哈希阵
File"E:/My_Project/image_sim_PHA/my_pha.py",line43,incal_phash_code
m_img=cv2.resize(cur_gray,dsize=(32,32))
error:C:\build\master_winpack-bindings-win64-vc14-static\opencv\modules\imgproc\src\imgwarp.cpp:3492:error:(-215)ssize.width>0&&ssize.height>0infunctioncv::resize
但是我在交互式中一行行检查了程序中的每一句语句,都能通过,但是在程序中就是报错,很崩溃,求大神指教。代码如下
#感知哈希算法计算相似图片
"""
importcv2
importnumpyasnp
fromglobimportiglob
importsys
reload(sys)
sys.setdefaultencoding("utf-8")
defload_image(path):
#初始化图像形成灰度图像
image=cv2.imread(path)
gray=cv2.imread(path,0)
#gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
returnimage,gray
defshow_image(image):
cv2.imshow('Theimage',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
"""
defshow_image(image,flag=0):
ifflag==0:
cv2.imshow('Theimagetobesearched',image)
elifflag==1:
cv2.imshow('Theresult',image)
cv2.waitKey(0)
cv2.destroyAllWindows()
"""
defcal_hash_code(cur_gray):
s_img=cv2.resize(cur_gray,dsize=(8,8))
img_mean=cv2.mean(s_img)#求8*8位平均值得到4维tuple
returns_img>img_mean[0]#返回为1,0值的8*8矩阵,哈希阵
defcal_phash_code(cur_gray):
#将图片缩小至32*32
m_img=cv2.resize(cur_gray,dsize=(32,32))
#浮点型用于计算
m_img=np.float32(m_img)
#离散余弦变换,得到dct系数矩阵
img_dct=cv2.dct(m_img)#得到频率域结果
img_mean=cv2.mean(img_dct[0:8,0:8])#只截取左上角的一部分8*8
#返回一个8*8bool矩阵
returnimg_dct[0:8,0:8]>img_mean[0]
defcal_dhash_code(cur_gray):
#dsize=(width,height)
m_img=cv2.resize(cur_gray,dsize=(9,8))
m_img=np.int8(m_img)#其中白色值255全部转化为-1
#得到8*8差值矩阵
m_img_diff=m_img[:,:-1]-m_img[:,1:]
returnm_img_diff>0#得到图像的差值哈希阵
defcal_hamming_distance(model_hash_code,search_hash_code):
#返回不相同的个数
diff=np.uint8(model_hash_code-search_hash_code)
returncv2.countNonZero(diff)
if__name__=='__main__':
#计时
e1=cv2.getTickCount()
#输入检索图片路径,并读取,显示
path_original=raw_input("Pleaseinputthepathoftheimagetobesearched:(E:/CuiChengyu/patentimages/patentimages/CN201630142426.0.jpg):")
#读取路径下每一个文件的路径
paths=iglob(r'E:/CuiChengyu/patentimages/patentimages/01/*')
#哈希参数调节
min_dis=input("PleaseinputthemindistanceofPHA(1~10):")
image_original,gray_original=load_image(path_original)#加载原图像
hash_original=cal_hash_code(gray_original)#计算8*8哈希阵
#计数
frame_count=0
#搜索结果列表
results=[]
forpath_targetinpaths:
frame_count+=1
image_target,gray_target=load_image(path_target)#加载要搜索的图像
hash_target=cal_hash_code(gray_target)#计算8*8哈希阵
distance=cal_hamming_distance(hash_original,hash_target)
ifdistance<min_dis:
results.append((distance,image_target))
#排序
sorted_results=sorted(results,cmp=lambdax,y:cmp(x[0],y[0]))
#计时
e2=cv2.getTickCount()
f=cv2.getTickFrequency()
time=(e2-e1)/f
print"Thewholeprocesscosts:",time
show_image(image_original)#显示原图像
foriinsorted_results:
show_image(i[1])#显示搜索结果图像
1 个解决方案
#1
你把那个大学,长宽打印出来看看,到底是多少啊,要求》0
更多相关文章
- python 按位置关系输出矩阵元素
- caffe python批量抽取图像特征
- 在Python中显示来自控制台的图像
- 显示一个矩阵,将一个共同因素放在同情中
- 矩阵类的python实现
- Python为8bit深度图像应用color map
- Tensorflow:恢复图形和模型,然后在单个图像上运行评估
- leet240. 搜索二维矩阵 II
- python的PIL绘制多行文本的图像。