利用opencv创建圆形头像图标(背景透明)

实现效果:
原图:
利用opencv创建圆形头像图标(背景透明)_第1张图片
输出图像:
利用opencv创建圆形头像图标(背景透明)_第2张图片

//创建圆形头像图标
#include
using namespace cv;
using namespace std;
int main(int argc, char *argv[])
{
    Mat src=imread("D:/ico.jpg");
    if (src.empty())
    {
        cout << "could not image..." << endl;
        return -1;
    }
    imshow("src",src);
    Mat mask=Mat(src.size(),src.type());
    mask=Scalar(0,0,0);
    circle(mask,Point(mask.cols/2,mask.rows/2),mask.cols/3,Scalar(255,255,255),-1);
    imshow("mask",mask);
    Mat dst;
    bitwise_and(src,mask,dst);
    imshow("dst",dst);
    Mat result;
    cvtColor(src,result,COLOR_BGR2BGRA);
    cout<<result.channels()<<endl;
    for (int i = 0; i < dst.rows; i++)
    {
        for (int j = 0; j < dst.cols;j++)
        {
            Vec3b &pixel_mask = mask.at<Vec3b>(i,j);
            Vec4b &pixel_temp = result.at<Vec4b>(i, j);
            if (pixel_mask[0] ==0 && pixel_mask[1] ==0 && pixel_mask[2] == 0)
            {
                pixel_temp[3] = 0;
            }
        }
    }
    imwrite("D:/result.png",result);
    waitKey(0);
    return 0;
}

运行结果:
利用opencv创建圆形头像图标(背景透明)_第3张图片
利用opencv创建圆形头像图标(背景透明)_第4张图片利用opencv创建圆形头像图标(背景透明)_第5张图片

你可能感兴趣的:(opencv,opencv,计算机视觉,人工智能)