问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么用opencv获取图像灰度值(用C语言)

发布网友 发布时间:2022-04-27 00:06

我来回答

2个回答

热心网友 时间:2022-06-20 22:54

1、可以变成灰度图也可以不变。这里假设你的图像都是IPL_DEPTH_8U类型。

2、如果变成灰度图,就是单通道图像,获取的就是每一个像素点的灰度值。
IplImage* img = cvLoadImage("test.bmp", 0);
for (int i = 0; i < img->height; i++)
{
for (int j = 0; j < img->width; j++)
{
//方法一:使用cvGet2D()函数间接访问
CvScalar s = cvGet2D(img, i, j);//其中i代表y轴(第i行),即height;j代表x轴(第j列),即width。
printf("gray value=%f\n",s.val[0]);

//方法二:使用直接访问
uchar val = ((uchar *)(img->imageData + i*img->widthStep))[j];//i和j的意义同上
printf("gray value=%d\n",val);
}
}

3、如果不变成灰度图,就是3通道图像,获取的就是每一个像素点的BGR值,然后分别获取B值,G值和R值。
IplImage* img = cvLoadImage("test.bmp", 1);
for (int i = 0; i < img->height; i++)
{
for (int j = 0; j < img->width; j++)
{
//方法一:使用cvGet2D()函数间接访问
CvScalar s=cvGet2D(img,i,j); //其中i代表y轴(第i行),即height;j代表x轴(第j列),即width。
printf("B=%f, G=%f, R=%f\n",s.val[0],s.val[1],s.val[2]);//注意是BGR顺序

//方法二:使用直接访问
int bVal = ((uchar *)(img->imageData + i*img->widthStep))[j*img->nChannels + 0]; // B
int gVal = ((uchar *)(img->imageData + i*img->widthStep))[j*img->nChannels + 1]; // G
int rVal = ((uchar *)(img->imageData + i*img->widthStep))[j*img->nChannels + 2]; // R
printf("B=%d, G=%d, R=%d\n",bVal,gVal,rVal);//注意是BGR顺序
}
}

热心网友 时间:2022-06-20 22:54

1、可以变成灰度图也可以不变。这里假设你的图像都是IPL_DEPTH_8U类型。

2、如果变成灰度图,就是单通道图像,获取的就是每一个像素点的灰度值。
IplImage* img = cvLoadImage("test.bmp", 0);
for (int i = 0; i < img->height; i++)
{
for (int j = 0; j < img->width; j++)
{
//方法一:使用cvGet2D()函数间接访问
CvScalar s = cvGet2D(img, i, j); //其中i代表y轴(第i行),即height;j代表x轴(第j列),即width。
printf("gray value=%f\n",s.val[0]);

//方法二:使用直接访问
uchar val = ((uchar *)(img->imageData + i*img->widthStep))[j]; //i和j的意义同上
printf("gray value=%d\n",val);
}
}

3、如果不变成灰度图,就是3通道图像,获取的就是每一个像素点的BGR值,然后分别获取B值,G值和R值。
IplImage* img = cvLoadImage("test.bmp", 1);
for (int i = 0; i < img->height; i++)
{
for (int j = 0; j < img->width; j++)
{
//方法一:使用cvGet2D()函数间接访问
CvScalar s=cvGet2D(img,i,j); //其中i代表y轴(第i行),即height;j代表x轴(第j列),即width。
printf("B=%f, G=%f, R=%f\n",s.val[0],s.val[1],s.val[2]); //注意是BGR顺序

//方法二:使用直接访问
int bVal = ((uchar *)(img->imageData + i*img->widthStep))[j*img->nChannels + 0]; // B
int gVal = ((uchar *)(img->imageData + i*img->widthStep))[j*img->nChannels + 1]; // G
int rVal = ((uchar *)(img->imageData + i*img->widthStep))[j*img->nChannels + 2]; // R
printf("B=%d, G=%d, R=%d\n",bVal,gVal,rVal); //注意是BGR顺序
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 上海公* 如果我报考*类的话 需要考几门呢?*类的题目与司法考试比起来 又如何? 上海饭圈网络科技有限公司怎么样? 上海公务员考试申论考几道题? 为什么opencv用CV_GRAY2RGB无法将灰度图转为彩色图? 如何将BGR转成YUV420 c++图像处理:如何将按像素(bgr、bgr、bgr……)读取存储的图像转换成按三通道来读取存储 上海市公务员财经管理考几门 针对opencv的提问!!!浮点型图像像素值范围是多少? 上海公务员考试是不是只要考三门? opencv下BGR2YCbCr opencv中RGB到HSV转换问题 用opencv如何提取像素点的RGB分量 上海公务员考多少分才可以进入面试? opencv提取RGB图像的每个像素点的R,G,B值并存到一个三维矩阵里 opencv (python)获取图像坐标并返回像素BGR的值不准确,什么问题导致,如何解决? opencv图像识别 红色 opencv 判断图像是不是rgb,并转换成rgb java使用opencv实现rgb与lab的转换 我现在有用opencv得到的jpg格式的一帧图片,请问我怎么把图片改变为rgb格式? 用opencv获取的彩色图像RGB是按什么方式排列的? 杭州饭圈科技有限公司怎么样? 上海往年公务员考试是考几天?一般在哪些地方考? 上海公务员考试一共要考几门? 饭圈资深粉丝揭秘饭圈乱象,为什么饭圈会存在如此混乱的现象? 造成“饭圈”乱象背后的根源是什么? 辐射到底是什么东西、、 饭圈该怎么定义? 如何了解饭圈 男生带什么戒指好看?带在哪个手指上? 男生装饰戒指戴哪个手指比较好看 男生戴戒指,应该戴哪根手指? 如何深入饭圈 男生戴戒指要戴哪个手 男生戴戒指得戴什么手指上? 企业债务重组的条件有哪些 OPPO手机能用多久? 什么是破产 债务重组 男生带戒指该带那哪只手合适 ?单身的话该戴哪只手指? OPPO手机能用几年 OPPO手机能用的住吗?