mdsk.net
当前位置:首页 >> 用opEnCv如何提取像素点的RGB分量 >>

用opEnCv如何提取像素点的RGB分量

谁能告诉我LED显示方面的像素点的相关知识,包括LED像素点的定义. 另外,一个像素点就是指一个灯吗? 答: 一个相素点不是指一个灯,单色的一个灯是一个相素点,双色的是两个灯为一个相素点

这问题看得太多,怕了,记得要好好看帮助文档,文档里几乎有所有你想要了解的了.CvScalar s;s=cvGet2D(img,i,j); //img就是IplImage指针了如果图像是单通道的话就是只有s.val[0]有像素值如果是3通道的就s.val[0]s.val[1]s.val[2]分别对应了像素的B G R这样够明了了吧?不过据说这个方法是比较慢的,但是好理解,你熟悉的话,img->imageData 就是指向像素数据的指针,喜欢取哪个点就移动指针就OK了

操作像素,并非改变像素的颜色

用mat 的话 直接imshow就行了 以下为伪代码:#include <iostream>#include <stack>#include "opencv2/opencv.hpp" using namespace std; using namespace cv; Mat im(600,800,CV_8UC3, Scalar(255, 255, 255));//3个255 为颜色的三通道 BGR

操作单个像素方法:at(int y, int x) cv::mat的成员函数: at(int y, int x)可以用来存取图像中对应坐标为(x,y)的元素坐标.但是在使用它时要注意,在编译期必须要已知图像的数据类型,这是因为cv::mat可以存放任意数据类型的元素.因此at方法的实现是用模板函数来实现的.使用方法:假设提前已知一幅图像img的数据类型为 unsigned char型灰度图(单通道),要对坐标为(10,12)的像素重新赋值为128,则对应操作如下 img.at<uchar>(12,10) = 128;

第一个参数为待检测的图像,注意一点,其必须是灰度图.第二个参数为输出的边缘图,其也是一个灰度图.后三个参数与canny算法直接相关,threshold1和threshold2 当中的小阈值用来控制边缘连接,大的阈值用来控制强边缘的初始分割,aperture_size算子内核大小,可以去看看canny算法.从彩色图到灰度图需要使用到cvcvtcolor函数,其接受三个参数,第一为输入,第二为输出,第三个为转换的标识,我们这边是rgb到gray,使用的是cv_rgb2gray.

用cv::Mat获得某点的RGB值有好多方法,最容易的方式是使用宏CV_MAT_ELEM( matrix, elemtype, row, col ),输入参数是矩阵的指针,矩阵元素类型,行,列,返回值是相应行,列的矩阵元素,矩阵元素的值就是所要获得的RGB值.例如:CvMat* mat = cvCreateMat(5,5,CV_32FC1);float element = CV_MAT_ELEM(*mat,float,3,2);

cv::findContours( ) 这个函数是用来找轮廓的,我经常用,应该能解决你这个问题. 这个函数找到的线存储的数据结构是std::vector<std::vector<cv::Point> > ,这个里面就有你想要的所有的轮廓点的坐标.

使用 Mat 中对矩阵元素的地址定位的知识 (参考博文:OpenCV中对Mat里面depth,dims,channels,step,data,elemSize和数据地址计算的理解)Code 1 :int main(){ //新建一个uchar类型的单通道矩阵(grayscale image 灰度图) Mat m(400, 400,

OpenCV中获取图像某一像素值 This is a basic example for the OpenCV.First we must know the structure of IplImage:IPL image:IplImage |-- int nChannels; // Number of color channels (1,2,3,4) |-- int depth; // Pixel depth in bits: | // IPL_DEPTH_8U,

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.mdsk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com