首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python中使用'haar‘小波对图像进行离散小波变换

在python中使用'haar‘小波对图像进行离散小波变换
EN

Stack Overflow用户
提问于 2018-05-13 17:36:14
回答 1查看 4.6K关注 0票数 1

我正在尝试将haar小波应用于python中的图像。以下是代码

代码语言:javascript
复制
from pywt import dwt2, idwt2
img = cv2.imread('xyz.png')
cA, (cH, cV, cD) = dwt2(img, 'haar')  

然后我修改嵌入一些数据的系数,如下所示

代码语言:javascript
复制
cH1=cH+k*pn_sequence_h
cV1=cV+k*pn_sequence_v

之后,我用下面的代码应用idwt

代码语言:javascript
复制
idwt2(cA,(cH1,cV1,cD),'haar')[:Mc,:Nc]

其中Mc和Nc是分解图像的高度和宽度。

但是,我得到了一个错误的代码。下面是一个错误。

代码语言:javascript
复制
 Traceback (most recent call last):
 File "dwt.py", line 15, in <module>
 idwt2(cA,(cH1,cV1,cD),'haar')[:Mc,:Nc]
 File "C:\Python27\lib\site-packages\pywt\_multidim.py", line 104, in idwt2
 LL, (HL, LH, HH) = coeffs
 ValueError: too many values to unpack

我应该怎么做才能修复这个错误?我是python的新手。任何帮助都将不胜感激。

在下面的代码中,我也尝试过这样做。但是这里我没有得到像CA,CH,CV,CD这样的系数。我得到的是所有系数加在一起。

代码语言:javascript
复制
import numpy as np
import pywt
import numpy
import PIL
from PIL import Image
img = PIL.Image.open("rot.png").convert("L")
imgarr = numpy.array(img) 
coeffs = pywt.dwt2(imgarr, 'haar')
pywt.idwt2(coeffs, 'haar')
EN

回答 1

Stack Overflow用户

发布于 2018-07-27 08:32:57

下面的代码应该可以工作:

idwt2((cA,(cH1,cV1,cD)),'haar')[:Mc,:Nc]

您错过了将coeffs打包到单个元组中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50314719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档