在安装完opencv后我们开始学习其强大的功能,如同hello world一样打开一张图片肯定是必须实现的功能。
下面我们开始讲解如何用opencv编写一个打开一张图片的程序。
一、main函数的格式
在c语言中我们常用void main() 来写主函数,但是在C++中这是不合法的,虽然有些编译器允许这样做。
在linux/unix中标准的main()函数的写法如下:
int main(int argc , char* argv[ ] ,char**env )
其中第一个参数argc未整型,用来统计程序运行时发给main函数的命令行参数的个数;第二个char*类型的argv[]参数为字符串数组,用来存放指向字符串参数的指针数组;
第三个参数env为char**l类型的字符串数组,经常用到的就前面两个参数。
二、opencv的命名空间
opencv中的c++类函数都是定义在命名空间cv之内。要访问必须先声明命名空间。
有两种声明方式;
第一,在代码开头位置声明:usingnamespace cv;
第二,在使用opencv的每一个类和函数时在前面加上cv::
三、图像载入:imread()函数
函数原型:
Mat imread(const string& filename , intflgs=1);
第一个参数未需要载入的图片的路径名;第二个参数默认未1,表示载入三通道的彩色图片。
四、图像显示函数:imshow()
imshow()函数用于在指定窗口中显示一张图片
函数原型为:void imshow(const string& winname , InputArray mat);
第一个参数需要显示的窗口表识名称
第二个填入需要显示的图像
源码如下:
openimg.cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc , char* argv[])
{
//read one image
Mat img=imread("lena.jpg");
if(img.empty())
{
fprintf(stderr,"Cant not load image \n");
return -1;
}
//show image in windows
imshow("load image",img);
//close windows after 100000ms
waitKey(100000);
return 0;
}
编译所需的makefile文件
makefile
CXX ?= g++
CXXFLAGS += -c -Wall $(shell pkg-config --cflags opencv)
LDFLAGS += $(shell pkg-config --libs --static opencv)
all: openimg
openimg: openimg.o; $(CXX) $< -o $@ $(LDFLAGS)
%.o: %.cpp; $(CXX) $< -o $@ $(CXXFLAGS)
clean: ; rm -f openimg.o openimg
本文永久更新地址://m.ajphoenix.com/linux/21398.html