实现效果:
原图:
输出图像:
//创建圆形头像图标
#include<opencv2/opencv.hpp>
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;
}
运行结果: