OpenCV中文网站
OpenCV的下载(请下载2.4以后的版本):
http://pan.baidu.com/s/1bnkYMjt
VS2010下,OpenCV的安装及使用:
OpenCV库的安装有两种方式,
1. 简单安装OpenCV到你指定的目录下即可,将其视为一个普通的库。
2. 安装完之后,用Cmake工具编译出自己的库。具体方法见
OpenCV的使用
使用OpenCV时,只需要将OpenCV的静态库目录,包含目录加到VS2010工程属性中 “VC++目录”下的对应项中,并将OpenCV的动态库目录加到系统环境变量的path中。最后将你需要连接的库文件加到VS2010工程属性中“链接器”的“输入”项。以后你还会用到其他的库,其一般用法都是如此。更具体方法可参考
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数据结构的方法。