在 python 中连接图像
concatenate image in python
任何人都可以帮助确定这里的问题吗?
我这里有代码连接 H 和 L 以呈现图像,每当我 运行 我得到的代码:
np.concatenate((H,L))
>> ValueError: zero-dimensional arrays cannot be concatenated
但我不知道为什么 H 和 L 是零维的。提前致谢
import cv2
import cv
import numpy as np
c1=0.5
c2=0.25
img1=cv2.imread("Penguin-cartoon.png") ## Genuine Image
img=cv2.imread("Penguin-cartoon.png",cv2.CV_LOAD_IMAGE_GRAYSCALE) #gray_scaled Image
A=img.astype(np.int16)
D=[]
C=[]
x,y=img.shape
B = np.empty((x,y), dtype = np.int16)
for j in range(1,y):
for i in range (0,x/2 -1 ):
if i==0:
P=A[j,2*i+2]*c1
B[j,2*i+1]=A[j,2*i+1]-P
elif i==x/2:
U=B[j,2*i-1]*c2
B[j,2*i]=A[j,2*i]+U
else :
P=(A[j,2*i-1]+A[j,2*i+2])*c1
B[j,2*i+1]=A[j,2*i+1]-P
U=(B[j,2*i-1]+B[j,2*i+1])*c2
B[j,2*i]=A[j,2*i]+U
for j in range(1,y):
for i in range (0,x/2 -1 ):
D=B[j,2*i-1]
C=B[j,2*i]
H=D.astype(np.uint8)
L=C.astype(np.uint8)
np.concatenate((H,L))
您正在串联的对象 H
、L
是标量而不是数组,因此会出现错误。他们在最后一个 for
循环中的赋值没有意义,
for j in range(1,y):
for i in range (0,x/2 -1 ):
D=B[j,2*i-1]
C=B[j,2*i]
H=D.astype(np.uint8)
L=C.astype(np.uint8)
顺便说一句,你应该看看一些关于numpy使用的教程。这个想法是,在大多数情况下,您可以使用向量化的 numpy 操作,而不是在 Python 中迭代数组的像素。前者要快得多。
任何人都可以帮助确定这里的问题吗?
我这里有代码连接 H 和 L 以呈现图像,每当我 运行 我得到的代码:
np.concatenate((H,L))
>> ValueError: zero-dimensional arrays cannot be concatenated
但我不知道为什么 H 和 L 是零维的。提前致谢
import cv2
import cv
import numpy as np
c1=0.5
c2=0.25
img1=cv2.imread("Penguin-cartoon.png") ## Genuine Image
img=cv2.imread("Penguin-cartoon.png",cv2.CV_LOAD_IMAGE_GRAYSCALE) #gray_scaled Image
A=img.astype(np.int16)
D=[]
C=[]
x,y=img.shape
B = np.empty((x,y), dtype = np.int16)
for j in range(1,y):
for i in range (0,x/2 -1 ):
if i==0:
P=A[j,2*i+2]*c1
B[j,2*i+1]=A[j,2*i+1]-P
elif i==x/2:
U=B[j,2*i-1]*c2
B[j,2*i]=A[j,2*i]+U
else :
P=(A[j,2*i-1]+A[j,2*i+2])*c1
B[j,2*i+1]=A[j,2*i+1]-P
U=(B[j,2*i-1]+B[j,2*i+1])*c2
B[j,2*i]=A[j,2*i]+U
for j in range(1,y):
for i in range (0,x/2 -1 ):
D=B[j,2*i-1]
C=B[j,2*i]
H=D.astype(np.uint8)
L=C.astype(np.uint8)
np.concatenate((H,L))
您正在串联的对象 H
、L
是标量而不是数组,因此会出现错误。他们在最后一个 for
循环中的赋值没有意义,
for j in range(1,y):
for i in range (0,x/2 -1 ):
D=B[j,2*i-1]
C=B[j,2*i]
H=D.astype(np.uint8)
L=C.astype(np.uint8)
顺便说一句,你应该看看一些关于numpy使用的教程。这个想法是,在大多数情况下,您可以使用向量化的 numpy 操作,而不是在 Python 中迭代数组的像素。前者要快得多。