OpenCV库的使用

来源:互联网 发布:php中介者模式 编辑:程序博客网 时间:2024/06/07 17:38

OpenCV中文网站

http://wiki.opencv.org.cn/

 

OpenCV的下载(请下载2.4以后的版本):

http://pan.baidu.com/s/1bnkYMjt

 

VS2010下,OpenCV的安装及使用:

OpenCV库的安装有两种方式,

1.      简单安装OpenCV到你指定的目录下即可,将其视为一个普通的库。

2.      安装完之后,用Cmake工具编译出自己的库。具体方法见

http://pan.baidu.com/s/1xJKUw

 

OpenCV的使用

使用OpenCV时,只需要将OpenCV的静态库目录包含目录加到VS2010工程属性VC++目录”下的对应项中,并将OpenCV的动态库目录加到系统环境变量path中。最后将你需要连接的库文件加到VS2010工程属性中“链接器”的“输入”项。以后你还会用到其他的库,其一般用法都是如此。更具体方法可参考

http://pan.baidu.com/s/1xJKUw

 

IpImage VS Mat

如果你在网上搜索OpenCV的图像处理,会出现基于IpImage 和 Mat两种不用数据结构的处理方法。那么它们有什么区别呢?

IplImage 是OpenCV最早的处理图像的数据结构,但这种结构的使用更像C语言习惯,Mat是OpenCV2.0以后版本出现的更符合面向对象编程习惯的数据结构,而这正是OpenCV更新的方向。

OpenCV为这两种数据结构提供了大量的图像IO,图像处理接口,你可以随便选用。推荐你用Mat数据结构,因为这符合我们一直追求的面向对象编程习惯。我们的示例程序也是基于Mat数据结构的。

 

这里提供了一个OpenCV在QT下显示的程序(VS2010版本)。


接口函数为paintEvent

Mat 版本,注意使用命名空间 using namespace cv;

void ImageWidget::paintEvent(QPaintEvent*paintevent)

{

    QPainterpainter;

    painter.begin(this);

 

    //Draw background

    painter.setBrush(Qt::lightGray);

    QRectback_rect(0, 0, width(), height());

    painter.drawRect(back_rect);

 

    //Draw image

    QImage image_show = QImage((unsigned char *)(image_mat_.data), image_mat_.cols, image_mat_.rows,image_mat_.step, QImage::Format_RGB888 );

    QRectrect = QRect(0, 0, image_show.width(), image_show.height());

    painter.drawImage(rect,image_show);

 

    painter.end();

}



Opencv中获取图像的长和宽:

Mat版本

详见ImageWidget::Mirror

Mat image;

Mat.cols, mat.rows即为图像的宽和高

获取和改变像素的颜色

Vec3i bgr;

bgr = images.at<Vec3b>(nrow, ncol); //getthe (nrow,ncol) pix value

images.at<Vec3b>(nrow, ncol) = bgr;//set the (nrow,ncol) pix value

 

ImageWidget::Invert

提供了一种用迭代器访问Mat数据结构的方法。


0 0
原创粉丝点击