opencv一帧图片改变为rgb格式

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
    Mat img=imread("f:/1.jpg");
    int height=img.rows;
    int width=img.cols;
    for(int i=0;i<height;i++)
    {
        unsigned char *data=img.data+i*width*img.channels();
        for(int j=0;j<width;j++)
        {
            int r=*(data+j*img.channels());
            int g=*(data+j*img.channels()+1);
            int b=*(data+j*img.channels()+2);
            cout<<r<<" "<<g<<" "<<b<<endl;
        }
    }        
    img.release();
    system("pause");
    return 1;
}

 

 

#include "WangSetup.h"
 
#include <iostream>
#include <cv.h>
#include <highgui.h>
 
using namespace std;
 
int main()
{
    //C++ Format
    cv::Mat img = cv::imread("lena.jpg");
    //取img中(30, 20)这个像素点的bgr信息
    cv::Vec3b bgr = img.at<cv::Vec3b>(30, 20);
    cout << "B: " << (unsigned int)bgr.val[0] << ", ";
    cout << "G: " << (unsigned int)bgr.val[1] << ", ";
    cout << "R: " << (unsigned int)bgr.val[2] << endl;
 
 
    //C Format
    IplImage *img2 = cvLoadImage("lena.jpg");        //8UC3, (0,0)B, (0,0)G, (0,0)R, (0,1)B, ...
    char *ptr = img2->imageData       //图像首地址
        + img2->widthStep * 30        //每行大小 * 行数
        + 3 * 20;                    //BGR占3个大小空间 * 列数
    printf("B: %d, G: %d, R: %d\n", (uchar)ptr[0], (uchar)ptr[1], (uchar)ptr[2]);
    cvReleaseImage(&img2);
     
    return 0;
}

 

CvScalar s;
s = cvGet2D(src, j,i);//获取src图像中坐标为(i,j)的像素点的值
s.val[0] 代表src图像BGR中的B通道的值~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EmbededCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值