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