怎么访问图像中每个像素的值
展开全部
#include"cv.h"
#include"highgui.h"
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
IplImage *myimage = cvLoadImage("D:\\w.jpg",1);//通过图片路径载入图片,参数1是彩色图片,0灰度图片
cvShowImage("w",myimage);
cvWaitKey(2000);//显示的时间2000ms
//像素遍历操作
for(int y=0;y<myimage->height;y++)
{
for(int x=0;x<myimage->width;x++)
{
((uchar*)(myimage ->imageData + myimage->widthStep*y))[x*3]=0;//(0-255) 蓝色通道像素
((uchar*)(myimage ->imageData + myimage->widthStep*y))[x*3+1]=111;//(0-255) 绿色通道像素
((uchar*)(myimage ->imageData + myimage->widthStep*y))[x*3+2]=111;//(0-255) 红色通道像素
}
}//
cvShowImage("w",myimage);
cvWaitKey();
}//修改RGB三个通道的值会使得图片像素值变化,你们可以试试只修改一个通道的值,而其他两个通道值不变,体会下效果
//彩色图片的像素点值得读取就是把三个通道的值取出来,灰度图的读取就是把每个像素点的单通道值取出来
这是将现有的图片像素值重新赋值,你要读出来就不赋值,直接printf三个通道的值就行了,不知道楼主懂了没?
#include"highgui.h"
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
IplImage *myimage = cvLoadImage("D:\\w.jpg",1);//通过图片路径载入图片,参数1是彩色图片,0灰度图片
cvShowImage("w",myimage);
cvWaitKey(2000);//显示的时间2000ms
//像素遍历操作
for(int y=0;y<myimage->height;y++)
{
for(int x=0;x<myimage->width;x++)
{
((uchar*)(myimage ->imageData + myimage->widthStep*y))[x*3]=0;//(0-255) 蓝色通道像素
((uchar*)(myimage ->imageData + myimage->widthStep*y))[x*3+1]=111;//(0-255) 绿色通道像素
((uchar*)(myimage ->imageData + myimage->widthStep*y))[x*3+2]=111;//(0-255) 红色通道像素
}
}//
cvShowImage("w",myimage);
cvWaitKey();
}//修改RGB三个通道的值会使得图片像素值变化,你们可以试试只修改一个通道的值,而其他两个通道值不变,体会下效果
//彩色图片的像素点值得读取就是把三个通道的值取出来,灰度图的读取就是把每个像素点的单通道值取出来
这是将现有的图片像素值重新赋值,你要读出来就不赋值,直接printf三个通道的值就行了,不知道楼主懂了没?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询