png,jpg图片透明度化demo

使用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界面中,就可以看到背景颜色变化了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值