opencv学习之旅--基础教程(图片读取,显示,写入)
本人是在Ubuntu下做开发的,首先配置一下集成开发环境,本人用的是Qt5.11.0版本。下载地址:点击打开链接
下载之后就是安装,安装步骤很简单,在这里就不介绍了。启动Qt,建立Qt Console Application 项目。
在pro文件添加opencv头文件路径和库文件路径:本人采用的都是绝对路径添加的。
INCLUDEPATH += /usr/local/include
LIBS += /usr/local/lib/libopencv_highgui.so \
/usr/local/lib/libopencv_core.so \
/usr/local/lib/libopencv_imgproc.so \
/usr/local/lib/libopencv_imgcodecs.so
本人的主要程序代码如下:
cv::Mat img1 = cv::imread("timg.jpg");
cv::namedWindow("Test1");
{
std::cout<<" picture not exist";
exit(0);
}
cv::imshow("Test1", img1);
cv::Mat result;
cv::flip(img1, result, 1);
cv::namedWindow("OutIamge");
cv::imshow("OutIamge", result);
cv::imwrite("outimage.jpg", result);
运行效果如下
下面对函数做如下说明:
第一件事是声明一个图像变量,变量类型为cv::Mat类型。接着一个简单的读取函数,将文件读取,解码以及内存的分配。
cv::nameWindow()函数是定义一个窗口,参数是窗口的名称,
img1.data此处的data事实上是指向已分配的内存块的指针,包括图像数据,当不存在数据时,它被简单的设置为0.
cv::imshow()是显示图像
cv::flip(img1,result,1)函数将图像水平反转,如果第三个参数设置为0表示垂直反转,如果为负数,表示既有水平反转也有垂直反转。
cv::imwrite()函数是写入图像,文件名的后缀表示保存图像的编码格式。
cv::Mat类简单介绍。cv::Mat类是用于保存图像以及其他矩阵数据的数据结构。默认情况下,它们的尺寸为0,但我们自己也可以指定初始尺寸:cv::Mat ima(240, 320, CV_8U, cv::Scalar(100));