python分块处理功能_在python3下对数据分块(8x8大小)使用OpenCV的离散余弦变换DCT

在MATLAB中有blkproc (blockproc)对数据处理, 在python下没找到对应的Function,

这里利用numpy 的split(hsplit和vsplit) 对数据分块处理成8x8的小块, 然后在利用OpenCV的dct函数做变换, 同时利用idct 验证数据变换是否正确.

import numpy as np

import cv2

a = np.arange(256).reshape((16,16))

print("ori data: n{}".format(a))

m,n = a.shape

print(m,n)

# Y = np.zeros(256).reshape((16,16))

hdata = np.vsplit(a,n/8) # 垂直分成高度度为8 的块

for i in range(0, n//8):

blockdata = np.hsplit(hdata[i],m/8)

#垂直分成高度为8的块后,在水平切成长度是8的块, 也就是8x8 的块

for j in range(0, m//8):

block = blockdata[j]

print("block[{},{}] data n{}".format(i,j,blockdata[j]))

Yb = cv2.dct(block.astype(np.float))

print("dct datan{}".format(Yb))

iblock = cv2.idct(Yb)

print("idct datan{}".format(iblock))

以下是最后个8x8块的数据:

block[1,1] data

[[136 137 138 139 140 141 142 143]

[152

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值