OpenCV_圖像梯度化
來源:程序員人生 發布時間:2015-08-07 08:10:26 閱讀次數:4447次
OpenCV_圖象梯度化
#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{
CvPoint center;//定義1個2維坐標的點
double scale = ⑶;
int i,j;
Mat image = imread("pic.jpg");//打開1張圖片
if(!image.data)
return ⑴;
center=Point2f(image.cols/2,image.rows/2);//構造這個2維坐標的點
Mat ptr[3];
Mat gradImg;
split(image,ptr);
for(int i=0;i<image.rows;i++)
{
for(int j=0;j<image.cols;j++)
{
double dx=(double)(j-center.x)/center.x;
double dy=(double)(i-center.y)/center.y;
double weight =exp((dx*dx+dy*dy)*scale);
ptr[0].at<uchar>(i,j)=(int)ptr[0].at<uchar>(i,j)*weight;// 將浮點數轉化為整數。
ptr[1].at<uchar>(i,j)=(int)ptr[1].at<uchar>(i,j)*weight;
ptr[2].at<uchar>(i,j)=(int)ptr[2].at<uchar>(i,j)*weight;
}
}
merge(ptr,3,gradImg);
imshow("Window",gradImg);
cvWaitKey(⑴);
return 0;
}
效果:

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈