openCV基础函数imread第二个参数
2017-06-12 00:28
501 查看
imread是学OpenCV 的第一个函数了,一直都用默认的方式也就是cv::imread("图像名");
但是在执行一个简单的图像锐化算法的时候输出图像总是输入图像的1/3,请教师兄后才知道是图像读入的问题。
来自CODE的代码片
OpenCVCookBook2-6.cpp
在main()里的imread,先前没有加第二个参数CV_LOAD_IMAGE_UNCHANGED,但是函数默认以RGB三波段形式读入图像,可是我给的是一个单波段的tif图像,因此,图像的处理效果就只有源图像的1/3了。
在reference里imread的各个参数如下:
C++: Mat imread(const
string& filename, int flags=1 )
由于接触时间短,还总结不出有什么精辟的结论,但是以后似乎用CV_LOAD_IMAGE_UNCHANGED就好了。
但是在执行一个简单的图像锐化算法的时候输出图像总是输入图像的1/3,请教师兄后才知道是图像读入的问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <iostream>#include <time.h>#include <opencv2/opencv.hpp> 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<const uchar>(j - 1); const uchar* current = image.ptr<const uchar>(j); const uchar* next = image.ptr<const uchar>(j + 1); uchar* output = result.ptr<uchar>(j); for (int i = 1;i<image.cols - 1; i++) { *output++ = saturate_cast<uchar>(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<double>(end_time - start_time)/CLOCKS_PER_SEC << "s" << endl; system("PAUSE"); return 0;} |
OpenCVCookBook2-6.cpp
在main()里的imread,先前没有加第二个参数CV_LOAD_IMAGE_UNCHANGED,但是函数默认以RGB三波段形式读入图像,可是我给的是一个单波段的tif图像,因此,图像的处理效果就只有源图像的1/3了。
在reference里imread的各个参数如下:
C++: Mat imread(const
string& filename, int flags=1 )
filename – Name of file to be loaded. flags – Flags specifying the color type of a loaded image: CV_LOAD_IMAGE_ANYDEPTH - If set, return 16-bit/32-bit image when the input has the corresponding depth, otherwise convert it to 8-bit. CV_LOAD_IMAGE_COLOR - If set, always convert image to the color one CV_LOAD_IMAGE_GRAYSCALE - If set, always convert image to the grayscale one >0 Return a 3-channel color image. Note In the current implementation the alpha channel, if any, is stripped from the output image. Use negative value if you need the alpha channel. =0 Return a grayscale image. <0 Return the loaded image as is (with alpha channel). |
相关文章推荐
- opencv中imread第二个参数的含义
- 【技术】OpenCV入门:3.1.0版本中的imread()函数flag参数
- 基础知识-通过引用来传递函数参数(直接访问函数参数)
- GetMessage函数之第二个参数
- 基础学习笔记之opencv(24):imwrite函数的使用
- c#基础知识——函数参数数组
- 关于Linux socket编程之listen函数的第二个参数backlog.
- strcat()函数的第二个参数是整形变量时,如何转换成char *
- 【C++基础之二十】可变参数的函数
- 基础学习笔记之opencv(18):kmeans函数使用实例
- C基础----函数参数传递之值传递
- 【C++基础之十四】函数的缺省参数
- cvCalcEigenDecomposite——opencv内置PCA算法的第二个函数小记。
- 【基础知识】iconv的第二个参数的两个后缀
- 编写一个函数 接受两个字符串参数 如果 第一个参数被第二个包含 则输出第一个参数的首字符(图)
- OpenCV 基础函数
- (一)ghostscript源码分析之interp()函数的第二个参数
- cvCalcEigenDecomposite——opencv内置PCA算法的第二个函数
- 基础备忘:数组做为函数参数
- 基础学习笔记之opencv(24):imwrite函数的使用