图像处理代码举例(C++、MATLAB、OpenCV)
一、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)
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语言等一次只能引用一个。
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<char>(m,n)Mat img = imread("test3.png",0); std::cout<<(float)img.at<uchar>(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_<int>(64,4) << Mat out(2*M,N,CV_8UC1,Scalar(0)); for(col=0;col<N;col++)
{
for(row=0;row<2*M;row++)
{
double tmp=(row-1)/M+1/(2*64);
int i=floor(tmp);
int phaseNum=floor((tmp-i)*64)+1;
if(i==0)
{
out.at<uchar>(row,col)=
(float)img.at<uchar>(1,col)*F.at<uchar>(phaseNum,1)+
(float)img.at<uchar>(1,col)*F.at<uchar>(phaseNum,2)+
(float)img.at<uchar>(2,3)+
(float)img.at<uchar>(3,4);
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |