OpenGL中利用OpenCV实施截屏

此博客介绍了如何使用OpenGL的glReadPixels函数获取应用程序的颜色缓冲区,然后结合OpenCV库进行IplImage结构处理、图像翻转和颜色格式转换,最终保存为BGR格式的JPEG图片。该方法涉及OpenGL、OpenCV的图像处理和文件保存操作。
摘要由CSDN通过智能技术生成

void cutAppScreenPic()
{ //获取应用程序颜色缓冲区数组
    GLubyte* frameData=(GLubyte*)malloc(wndWidth*wndHeight*3);
    glReadPixels(0,0,wndWidth,wndHeight,GL_RGB,GL_UNSIGNED_BYTE,frameData);

 

   //创建IplImage结构 并指定结构头为适当格式

    IplImage* SnapImage=cvCreateImageHeader(cvSize(wndWidth,wndHeight),IPL_DEPTH_8U,3);

   //将刚创建的IplImage结构的DATA数据指针指向之前获取到的缓冲区数组
    cvSetData( SnapImage, frameData,wndWidth*3); 

 

   //由于opencv里颜色data存放的特点 这里要进行下上下翻转
    cvFlip( SnapImage, SnapImage, 0 );//上下翻转

   //这里要进行下RGB-BGR的转换...
    cvCvtColor( SnapImage, SnapImage,CV_RGB2BGR); //转格式

 

   //保存图片
    time_t t = time(0);
    char strTime[64];
    ZeroMemory(strTime,sizeof(strTime));
    strftime(strTime , 64, "%Y%m%d%H%M%S",localtime(&t) );
    strcat(strTime,".jpg");//保存为年月日时分秒.jpg
    cvSaveImage(strTime,SnapImage);

 

    //释放内存

    cvReleaseImage(&SnapImage);
    free(frameData);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值