读取图片是可能会出现误差的!
matlab:
image_I = imread('0.jpg');
image_I = rgb2gray(image_I);
python:
image_I= cv2.imread('0.jpg',0)
这两张灰度图,如果对它们的像素进行求和,不好意思,不一样!因为图片大,所以相差这么多是正常的,这个 也叫误差。
下标问题:
matlab:
for row=1:sizem_r
for j=1:NEx
matrix_ex(row+NEx,NEx+1-j)=matrix(row,j);
matrix_ex(row+NEx,sizem_c+NEx+j)=matrix(row,sizem_c+1-j);
end
end
python:
for row in range(sizem_r):
for j in range(NEx):
matrix_ex[row+NEx,NEx-j-1]=matrix[row,j]
matrix_ex[row+NEx,sizem_c+NEx+j]=matrix[row,sizem_c-1-j]
matlab代码中的row+NEx,NEx+1-j
中的+1
,在python代码里改为-1
,这个只有输出看看,确保python矩阵的坐标比matlab矩阵的坐标少1时,那么它们指向的是同一个像素。
图像保存问题:
matlab:
imwrite(I14,'I14.jpg')
python:
cv2.imwrite('I14_v'+str(v)+'.jpg',I14)
不好意思,它俩在矩阵数据完全一样时,保存起来的图片完全不一样!但不用怀疑,没有错。左边是matlab的结果,右边是python的结果。
![](https://i-blog.csdnimg.cn/blog_migrate/40da67838e0a8b4bc75363099a503b6c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/1bd87724c7928588b32afc4b5e1bb45c.jpeg)
其他的一些对应操作(第一行为matlab,第二行为python)
获取数组元素:
matlab_matrix(1,2)
numpy_matrix[1,2]
平方:
a = v.^2
a = v**2 #3次方只需要将2改为3
点乘
a = a.*b
a = np.dot(a,b)
转置
a = M'
a = M.T
matlab初始化一个数组可以用其他数组,numpy不可以
因为numpy用matrix_a来初始化matrix_b,当修改matrix_b时会将matrix_a也给修改了。
矩阵乘法
要特别注意,numpy里面*不表示矩阵乘法
Y = M* N
Y = np.matmul(M,N) #而且不能三个连乘?