图像如何通过opencv转换一张带污点的图像

/*      程序名: image.cpp
功能: 本程序显示如何用C++类来创建和显示图像,这个C++类在 cxcore.hpp 中定义,与 矩阵类(CvMatrix) 相似
*/

#include "cv.h"
#include "highgui.h"

int main( int argc, char** argv )
{
    // 结构中载入图像:图像也是BMP图像(cvLoadImage)或者其它格式
    // XML/YAML (cvLoad)
    CvImage img(argc > 1 ? argv[1] : "lena.jpg", 0, CV_LOAD_IMAGE_COLOR),
        img_yuv, y, noise;
    CvRNG rng = cvRNG(-1);

    if( !img.data() ) // 检查图像是否被载入
        return -1;

    img_yuv = img.clone(); // 克隆图像
    cvCvtColor( img, img_yuv, CV_BGR2YCrCb ); // 色彩空间转换

    y.create( img.size(), IPL_DEPTH_8U, 1 ); // 创建图像
    noise.create( img.size(), IPL_DEPTH_32F, 1 );

    cvSplit( img_yuv, y, 0, 0, 0 ); // 分解
// 正态分布的随机数组
cvRandArr( &rng, noise, CV_RAND_NORMAL, cvScalarAll(0), cvScalarAll(20) ); 
    cvSmooth( noise, noise, CV_GAUSSIAN, 5, 5, 1, 1 ); // GAUSSIAN滤波做平衡
    cvAcc( y, noise );  // noise = noise + y
    cvConvert( noise, y ); // y = noise * 1 + 0
    cvMerge( y, 0, 0, 0, img_yuv );  // 图层合并
    cvCvtColor( img_yuv, img, CV_YCrCb2BGR ); // 图像色彩空间转换

    cvNamedWindow( "image with grain", CV_WINDOW_AUTOSIZE );
    img.show( "image with grain" ); // cvShowImage的另外一种形式
    cvWaitKey();

    return 0;
// 所有图像自动释放,这是使用C++类比较方便的地方
}


这里写图片描述



总结:
1 cvConvert(src,dst) : 执行两个操作:将src图像数据类型改变为dst图像数据类型;将src的数据赋值到dst
2 cvsmooth: 目前opencv可以提供5中不同的平滑操作方法,所有操作都有cvsmooth函数实现
3 cvAcc : Acc将帧叠加到累积器(accumulator)中



FR:海涛高软(hunk Xu) QQ技术交流群:386476712

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值