png,jpg图片透明度化demo

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

目录
相关文章
|
5月前
jpg、png、gif 的区别是什么?如何进行选择?
jpg、png、gif 的区别是什么?如何进行选择?
22 0
|
5月前
jpg、png、gif 的区别是什么?如何进行选择
jpg、png、gif 的区别是什么?如何进行选择
25 0
|
9月前
|
存储 Web App开发 编解码
图片:前端展示图像(img 、picture、svg、canvas )及常用图片格式(PNG、JPG、JPEG、WebP、GIF、SVG、AVIF等)
图片:前端展示图像(img 、picture、svg、canvas )及常用图片格式(PNG、JPG、JPEG、WebP、GIF、SVG、AVIF等)
551 1
|
11月前
|
Web App开发 存储 iOS开发
一日一技:把webp图片保存为png
一日一技:把webp图片保存为png
124 0
使用GDI+显示PNG
使用GDI+显示PNG
101 0
|
Python
将8位的tif图片改为png图片
将8位的tif图片改为png图片
180 0
|
Web App开发 JavaScript 前端开发