如何使用带有树莓派相机模块的OpenCV C ++在彩色模式下获取图像

The*_*ast 0 c++ camera opencv colors raspberry-pi2

我正在使用带有opencv 3 gold和raspicam-0.1.3 libarrry的raspberry pi 2作为pi相机模块,我已经测试了以下代码,它可以正常工作,但它为我提供了灰度模式(黑白)图像,但是我想要彩色模式(RGB)

这是代码:

#include <ctime>
#include <iostream>
#include <raspicam/raspicam_cv.h>
using namespace std; 

int main ( int argc,char **argv ) {

    time_t timer_begin,timer_end;
    raspicam::RaspiCam_Cv Camera;
    cv::Mat image;
    int nCount=100;
    //set camera params
    Camera.set( CV_CAP_PROP_FORMAT, CV_8UC1 );
    //Open camera
    cout<<"Opening Camera..."<<endl;
    if (!Camera.open()) {cerr<<"Error opening the camera"<<endl;return -1;}
    //Start capture
    cout<<"Capturing "<<nCount<<" frames ...."<<endl;
    time ( &timer_begin );
    for ( int i=0; i<nCount; i++ ) {
        Camera.grab();
        Camera.retrieve ( image);
        if ( i%5==0 )  cout<<"\r captured "<<i<<" images"<<std::flush;
    }
    cout<<"Stop camera..."<<endl;
    Camera.release();
    //show time statistics
    time ( &timer_end ); /* get current time; same as: timer = time(NULL)  */
    double secondsElapsed = difftime ( timer_end,timer_begin );
    cout<< secondsElapsed<<" seconds for "<< nCount<<"  frames : FPS = "<<  ( float ) ( ( float ) ( nCount ) /secondsElapsed ) <<endl;
    //save image 
    cv::imwrite("raspicam_cv_image.jpg",image);
    cout<<"Image saved at raspicam_cv_image.jpg"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

只是注意到在尝试这里的第一个示例时,我得到了彩色图像:http : //sourceforge.net/projects/raspicam/files/?source=navbar

我所做的是插入cvtColor(image,cimg,CV_GRAY2RGB); 在写入之前,但这不能解决我的问题

任何帮助将不胜感激...谢谢

Mik*_*iki 5

您在这里将相机设置为“灰度模式”:

Camera.set( CV_CAP_PROP_FORMAT, CV_8UC1 );
Run Code Online (Sandbox Code Playgroud)

如果要“彩色模式”,则改为执行以下操作:

Camera.set( CV_CAP_PROP_FORMAT, CV_8UC3 );
Run Code Online (Sandbox Code Playgroud)

CV_8UC1表示每种颜色1个字节,即灰度,而CV_8UC3表示每种颜色3个字节,例如RGB