您的位置:首页 > 运维架构

opencv学习笔记1

2014-01-06 21:12 253 查看
一些基本问题的摘录:

Vec3f:

表示的是3通道float类型的 Vect,就相当于3通道float类型的图像(这是其中一个具体化),解释可以从源代码中看出来。

下面给出一个具体的例子:

Vec3f point = Vec3f(10,10,3.2);//Float, 3 components

Mat mat(3,3,CV_32FC3,);//3 channel matrix

Vec3f v3f = mat.at<Vec3f>(y, x);//read color values for pixel (y,x)

这里注释一下:Vec3f是一种数据类型,其是3通道的float,后面的mat.at<Vec3f>(y, x)是访问图像的一种方式。(可以从定义形式上看出来 int a=....)

对于mat的理解,可以认为mat.at<Vec3f>是mat的一种访问形式,其有点类似vector。


创建存储三通道图像的矩阵:

[cpp] view
plaincopy

Mat img(Size(70,70),CV_8U3C,Scalar(0,0,0)

灰度图(8UC1)的(x,y)位置的像素值:

[cpp] view
plaincopy

Scalar intensity = img.at<uchar>(x, y);

intensity.val[0]中保存图像的灰度值(0-255),另外intensity.val[1],intensity.val[2]为0
获取3通道图像像素值:

[cpp] view
plaincopy

Vec3b intensity = img.at<Vec3b>(x, y);

uchar blue = intensity.val[0];

uchar green = intensity.val[1];

uchar red = intensity.val[2];

获取cv::Mat的坐标系以纵向为x轴,横向为y轴。而cvPoint等则相反:

[cpp] view
plaincopy

Mat img = imread("F:\\lena.jpg");

for(int i = 0;i<100;i++)

for(int j = 100;j<200;j++)

img.at<Vec3b>(i,j) = 0;

line(img,cvPoint(0,0),cvPoint(200,400),Scalar(255,0,0),2);

imshow("Lena",img);

cvWaitKey(0);

摘自:

/article/9396713.html

/article/8190878.html

/article/2503041.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: