zoukankan      html  css  js  c++  java
  • openCV C++ 代码笔记

    代码片段1

    cv_contourMask_step_tmp=cv_contourMask.clone();
        cv::Mat maskImage;
        UIImageToMat(pathimg, maskImage,true);
       // m_UIImageToMat1(pathimg, maskImage);
        //大图叠加小区域
        cv::Mat addrect(cv_contourMask,cv::Rect(offset.x,offset.y,pathimg.size.width,pathimg.size.height));
        //maskImage.copyTo(addrect);
        //dst = alpha*src1 + beta*src2 + gamma
        if (self.isErase) {
           // cv::addWeighted(addrect, 0, maskImage, 0, 0, addrect);
            cv::subtract(addrect, maskImage, addrect);
        }
        else
        {
            //dst = alpha*src1 + beta*src2 + gamma
            cv::addWeighted(addrect, 1, maskImage, 1, 0, addrect);
        }

    代码片段2

    //二值
            cv::threshold(tempImage,tempImage,thresh,255,cv::THRESH_BINARY);
             int c= tempImage.channels();
            //UIImage *img2=MatToUIImage(tempImage);//调试显示图片
            //根据中心点的颜色值来确定有效的位置
            int tw=tempImage.cols;
            int th=tempImage.rows;
            int center=tempImage.at<uchar>(th/2,th/2);
            
            int x0=tw/2;
            int y0=th/2;
            
           
            if(center==0)
            {
                //中心点为黑色,翻转图片颜色
                for(int i=0;i<tw;i++)
                  {
                    for(int j=0;j<th;j++)
                     {
                         if (tempImage.at<uchar>(j,i)==0) {
                             tempImage.at<uchar>(j,i)=255;
                    
                         }
                         else
                         {
                            tempImage.at<uchar>(j,i)=0;
      
    
                         }
                    }
                }
            }

     2张4同道图片叠加:

    void MergeImage(Mat bgImg,Mat fgImg,Mat& dstImg)
    {
        dstImg=bgImg.clone();
        printf("%d",bgImg.channels());
        printf("%d",fgImg.channels());
        for (int y = 0; y < fgImg.rows; y++)
        {
    
            const cv::Vec4b* fgImg_pixel = fgImg.ptr<cv::Vec4b>(y);
            cv::Vec4b* dstImg_pixel = dstImg.ptr<cv::Vec4b>(y);
            for (int x = 0; x < fgImg.cols; x++,++fgImg_pixel, ++dstImg_pixel)
            {
                double alpha = (*fgImg_pixel).val[3]/255.0;
                (*dstImg_pixel).val[0]=(*fgImg_pixel).val[0]*alpha+(*dstImg_pixel).val[0]*(1-alpha);
                (*dstImg_pixel).val[1]=(*fgImg_pixel).val[1]*alpha+(*dstImg_pixel).val[1]*(1-alpha);
                (*dstImg_pixel).val[2]=(*fgImg_pixel).val[2]*alpha+(*dstImg_pixel).val[2]*(1-alpha);
             
            }
        }
        
    
    }
  • 相关阅读:
    面向对象(二)-特性
    面向对象(一)-初步认识
    函数(十)-内置模块
    函数(九)-包与模块
    函数(八)-闭包与装饰器
    函数(七)-嵌套作用域
    函数(六)-匿名函数
    CSS阴影效果(Box-shadow)用法趣味讲解
    css 实现div内显示两行或三行,超出部分用省略号显示
    js基础知识(一)--截取字符串
  • 原文地址:https://www.cnblogs.com/bandy/p/4349913.html
Copyright © 2011-2022 走看看