使用opencv对各种图片进行透明度化操作
1.如何配置opencv,相信大家已经会了,那直接跳到第2步,我给不会的同学们讲讲
1,下载opencv官方库文件,https://docs.opencv.org/
 
 我这里下载的是4.5.5版本。
 2,在你们的程序中配置opencv,右键项目-属性
 
 找到c++ --常规–附加包含目录,添加如下:D:\opencv4.5.5\opencv\build\include
 D:\opencv4.5.5\opencv\build\include\opencv2
 找到链接器–常规–附加库目录 添加如下:D:\opencv4.5.5\opencv\build\x64\vc15\lib
 
 最后一步,在链接器–输入-附加以来项添加opencv_world455d.lib(根据你opencv版本不同有所改动)
 
 验证一下,项目中添加头文件#include<opencv2/opencv.hpp>如果不报错,就代表添加成功了
2.那正式对图片透明度进行操作,狠人话不多,直接上代码加注释
#include<opencv2/opencv.hpp>
#include <iostream>
int main()
{
    // 命名空间声明
	using namespace  cv;
    std::cout << "Hello World!\n";
	// 读取原始图片
	cv::Mat src = cv::imread(".\\img\\删除.png", cv::IMREAD_UNCHANGED);
	// 创建用于保存结果的图像矩阵
	cv::Mat result;
	// 将原始图像转换为带有透明通道的图像(BGRA格式)
	cvtColor(src, result, cv::COLOR_BGR2BGRA);
	// 遍历图像像素,根据阈值设置透明度
	for (int i = 0; i < src.rows; i++)
	{
		for (int j = 0; j < src.cols; j++)
		{
			// 获取原始图像和结果图像的指针
			uchar* pSrc = src.ptr<uchar>(i, j);
			uchar* pResult = result.ptr<uchar>(i, j);
			// 设置默认不透明度为255
			pResult[3] = 255;
			// 如果原始图像的RGB通道值均大于200,则认为是背景
			// 将对应结果图像的透明度设为0,即完全透明
			if (pSrc[0] > 200 && pSrc[1] > 200 && pSrc[2] > 200)
			{
				pResult[3] = 0;
			}
			/* 如果希望设置其他颜色为透明,可以使用类似的逻辑
			if (pSrc[0] > 20 || pSrc[1] > 20 || pSrc[2] > 20)
			{
				pResult[3] = 255;
			}
			*/
		}
	}
	// 将处理后的图像保存为结果图像
	cv::imwrite("result.png", result);
	return 0;
}
注释解释的很清楚,上点图片看看效果如何。
 
 
 经过透明度化后的图片,在贴到ui界面中,就可以看到背景颜色变化了。


















![P8599 [蓝桥杯 2013 省 B] 带分数(dfs+全排列+断点判断)](https://img-blog.csdnimg.cn/a340ed91cf984ee79e92afbfe35ac004.png)
