imread是學OpenCV 的第一個函數了,一直都用默認的方式也就是cv::imread("圖像名");
但是在執行一個簡單的圖像銳化算法的時候輸出圖像總是輸入圖像的1/3,請教師兄後才知道是圖像讀入的問題。
#include
#include
#include
using namespace std;
using namespace cv;
void sharpen(const Mat &image, Mat & result)
{
result.create(image.size(),image.type());
for (int j = 1;j < image.rows - 1; j++)
{
const uchar* previous = image.ptr(j - 1);
const uchar* current = image.ptr(j);
const uchar* next = image.ptr(j + 1);
uchar* output = result.ptr(j);
for (int i = 1;i(5*current[i] - current[i - 1] - current[i + 1] - previous[i] - next[i]);
}
}
result.row(0).setTo(Scalar(0));
result.row(result.rows - 1).setTo(Scalar(0));
result.col(0).setTo(Scalar(0));
result.col(result.cols - 1).setTo(Scalar(0));
}
int main()
{
clock_t start_time = clock();
Mat image = imread("home.tif",CV_LOAD_IMAGE_UNCHANGED);
if(!image.data)
{
cout << "Cannot Open!!" << endl;
}
imshow("Original",image);
Mat result;
sharpen(image,result);
imshow("result",result);
waitKey(0);
clock_t end_time = clock();
cout << "Running Time: " << static_cast(end_time - start_time)/CLOCKS_PER_SEC << "s" << endl;
system("PAUSE");
return 0;
}
在reference裏imread的各個參數如下:
C++: Mat imread(const
string& filename, int flags=1 )
|