求大神改错

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/contrib/contrib.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <cv.h>
using namespace cv;


  
void cvSkinSegment(IplImage* img, IplImage* mask){  
    CvSize imageSize = cvSize(img->width, img->height);  
    IplImage *imgY = cvCreateImage(imageSize, IPL_DEPTH_8U, 1);  
    IplImage *imgCr = cvCreateImage(imageSize, IPL_DEPTH_8U, 1);  
    IplImage *imgCb = cvCreateImage(imageSize, IPL_DEPTH_8U, 1);  
      
      
    IplImage *imgYCrCb = cvCreateImage(imageSize, img->depth, img->nChannels);  
    cvCvtColor(img,imgYCrCb,CV_BGR2YCrCb);  
    cvSplit(imgYCrCb, imgY, imgCr, imgCb, 0);  
    int y, cr, cb, l, x1, y1, value;  
    unsigned char *pY, *pCr, *pCb, *pMask;  
      
    pY = (unsigned char *)imgY->imageData;  
    pCr = (unsigned char *)imgCr->imageData;  
    pCb = (unsigned char *)imgCb->imageData;  
    pMask = (unsigned char *)mask->imageData;  
    cvSetZero(mask);  
    l = img->height * img->width;  
    for (int i = 0; i < l; i++){  
        y  = *pY;  
        cr = *pCr;  
        cb = *pCb;  
        cb -= 109;  
        cr -= 152  
            ;  
        x1 = (819*cr-614*cb)/32 + 51;  
        y1 = (819*cr+614*cb)/32 + 77;  
        x1 = x1*41/1024;  
        y1 = y1*73/1024;  
        value = x1*x1+y1*y1;  
        if(y<100)    (*pMask)=(value<700) ? 255:0;  
        else        (*pMask)=(value<850)? 255:0;  
        pY++;  
        pCr++;  
        pCb++;  
        pMask++;  
    }  
    cvReleaseImage(&imgY);  
    cvReleaseImage(&imgCr);  
    cvReleaseImage(&imgCb);  
    cvReleaseImage(&imgYCrCb);  
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值