【发布时间】:2021-08-11 14:02:06
【问题描述】:
如何将图像划分为 8x8 块(并对块进行 DCT),然后使用 opencv 将它们合并回来。我已将图像划分为块,但我不知道如何通过实现重复数据删除将其合并回来。 这是我将图像划分为块的代码
`import time
import cv2
import numpy as np
from hashlib import md5
hashs=[]
def compute_image_path(path):
img=cv2.imread(path)
#img=cv2.resize(img,(512,512))
print(img.shape)
print(img.size/1024)
start=time.time()
imgs=np.split(img,8,axis=0)
for i,ix in enumerate(imgs):
ig=np.split(ix,8,axis=1)
for j,iy in enumerate(ig):
if(j==1):
cv2.imshow(str(i*8+j),iy)
cv2.imwrite("C:\\Users\\prave\\Desktop\\Comp\\"+str(i*8+j)+".jpg",iy)
hashs.append(md5(iy.tostring()).hexdigest())
end=time.time()
print(end-start)
print(len(hashs))
print(len(set(hashs)))
cv2.waitKey(0)
print(hashs[0])
print(hashs[1])
if __name__ == "__main__":
#img=np.zeros((512,512,3))
#img[:200,:,0]=100
#img[200:400,:,1]=100
#img[400:,:,2]=100
#cv2.imshow("input",img)
#cv2.waitKey(0)
compute_image_path("C:\\Users\\prave\\Desktop\\IMG_2849.jpg")`
【问题讨论】:
-
你能再具体一点吗?这些块是否像网格一样,因此将图像分成 2x2 块并将它们重新合并在一起?还是该块是较大图像的子图像?
-
如果您知道每件作品的去向,您可以简单地使用
np.hstack和np.vstack,但是是的,您需要更好地解释您的问题,正如 GenError 指出的那样,请通过How to ask 和How to create a minimum complete verifiable example -
我已经把图片分成了8*8块