手动将matlab代码改成python代码的坑

读取图片是可能会出现误差的!

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的结果。

其他的一些对应操作(第一行为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)  #而且不能三个连乘?
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值