图像处理代码举例(C++、MATLAB、OpenCV)
阅读原文时间:2023年07月13日阅读:1

一、C中用数组存图像信息,下标索引:

pbTag[y*newWidth+x]

见:https://www.cnblogs.com/wxl845235800/p/11149853.html

HRESULT Imagejoint(PBYTE pbSrc,int iWidth,int iHeight,double dbZoom,PBYTE pbTag)

    PBYTE    pbSrc=NULL,pbTag=NULL;//源图、目标图  
    PBYTE    pbImage=NULL;//load图像后存在这  
    PDWORD    pdwImage=NULL;//用于保存图像

    CString str = "src4.bmp";  
    LPCTSTR filename = (LPCTSTR)str;

      cImage.Load(filename);

        iWidth=cImage.GetWidth();  
        iHeight=cImage.GetHeight();

//分配源图内存
pbSrc = (PBYTE)malloc(iWidth*iHeight);


二、MATLAB用img(m,n),图像下标从1开始。

Matlab的下标是可以多行多列同时引用的,而像C语言等一次只能引用一个。

A(2:3,3:-1:1)表示引用数组中的2~3行,3~1列对应的元素 
A(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒数第n行或列 
A(1,end-1)表示引用第1行倒数第2个元素 
A([2 1 3 3],[1 1 2 2 1])表示引用按两个向量引用指定的元素,即A中的第2,1,3,3行和第1,1,2,2,1列对应的元素。

https://blog.csdn.net/sinat_26492471/article/details/52959511

ima=double(imread('lenna2.bmp'));

%原图

ima=rgb2gray(ima);

ima(:,:)=255;

见:https://www.cnblogs.com/wxl845235800/p/10898203.html

https://www.cnblogs.com/wxl845235800/p/7700887.html

三、OpenCV中:调用矩阵元素

(float)img.at(m,n)

Mat img = imread("test3.png",0);

std::cout<<(float)img.at(1,1)<< std::endl;

https://www.cnblogs.com/wxl845235800/p/9082025.html

Mat img = imread("test.png",0);//灰度图

M=img.rows;//行数、图像高度  
N=img.cols;//列数、图像宽度

cv::Mat F= (cv::Mat_(64,4) <<

Mat out(2*M,N,CV_8UC1,Scalar(0));

for(col=0;col(row,col)=
(float)img.at(1,col)*F.at(phaseNum,1)+
(float)img.at(1,col)*F.at(phaseNum,2)+
(float)img.at(2,col)*F.at(phaseNum,3)+
(float)img.at(3,col)*F.at(phaseNum,4);
}

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器