目录

1.导言

2.引言

3.代码分析

4.优化改进

5.总结


1.导言

在图像处理领域,OpenCV是一款强大而广泛应用的开源库,能够提供丰富的图像处理和计算机视觉功能。本篇博客将介绍如何利用Qt 编辑器调用OpenCV库对照片进行换底色处理,实现更加独特和吸引人的效果

最终的实现效果如下图

2.引言

OpenCV是一个跨平台的计算机视觉库,其中包含了大量用于图像处理的函数和算法。照片换底色处理是一种常见的图像处理技术,可应用于广告设计、摄影后期处理等领域,为照片增添更多的艺术表现力。本次博客将使用OpenCV库中的函数和方法,在一张照片中将指定颜色范围内的背景替换为自定义的颜色。

3.代码分析

照片换底色处理是一种图像处理技术,通过选择并替换背景颜色,改变照片的整体视觉效果。OpenCV库提供了丰富的函数和方法,可以实现对图像的读取、处理和显示等操作。通过利用OpenCV的颜色转换、颜色范围选择和图像复制等函数,我们可以方便地实现照片换底色处理。

1.首先,需要在程序中引入OpenCV库的头文件,这样才能使用OpenCV的函数和数据结构。先下载好OpenCV然后把OpenCv的头文件包含到pro文件中去 注意要找到include文件地址

然后在x86中bin文件下所以形如 libopencv_*,dll 的文件 包含进去同时复制粘贴到C:\Windows\SysWOW64

添加好库以后头文件也要包含进去(可以在添加OpenCV头文件之前运行一遍,不然电脑可能没有运行找不到库,让电脑反应过来)

#include <iostream>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;

 2.对图片进行处理

本次使用的代码中,我们首先将输入图像转换为HSV格式,以便更好地处理颜色信息。然后,通过指定颜色范围,创建一个掩膜(mask),将在范围内的像素设置为白色,不在范围内的像素设置为黑色。接下来,通过取反操作,我们可以从原始图像中抠出人像区域。创建一个新的背景图像,并将其设置为自定义的背景颜色。最后,通过将原始图像复制到新的背景图像中,仅保留人像区域,实现照片换底色的效果。

代码实现

    //1.显示一张图片Mat image = imread("d:/test.png");imshow("1",image);//2.图片转hsv格式Mat hsv;cvtColor(image,hsv,COLOR_BGR2HSV);imshow("2",hsv);//3.截取颜色区域的范围 inRang   在hsv取值范围内 呈白色  不在范围内 呈黑色Mat mask;//模板inRange(hsv,Scalar(100,43,46),Scalar(124,255,255),mask);imshow("3",mask);//现在的mask 就是可以抠出蓝色的底色//4.取反操作  但是我们需要抠出的是人像bitwise_not(mask,mask);imshow("4",mask);

对图片进行hsv  ,取色  , 取反 创建新背景效果如下

Scalar可以选择颜色范围,三元素RGB颜色范围,针对选取的颜色可以参考hsv表

 3.实现照片换底色,选取红色背景

红色背景RGB选择 为 40,40,200,也可以根据自己需要调整范围

 //5.做一张红色背景图   大小?类型? 参考image原始图片Mat redBack = Mat::zeros(image.size(),image.type());redBack = Scalar(40,40,200);imshow("5",redBack);//6.实现图片的拷贝操作image.copyTo(redBack,mask);imshow("6",redBack);

4.优化改进

对于原始代码,我们可以进行一些优化和改进,以提高代码的可读性和扩展性。例如,可以将换底色处理的功能封装成一个独立的函数,方便重复调用。同时,可以通过参数化的方式,使得函数可以根据不同的需求进行自定义设置。此外,还可以添加错误检查和异常处理机制,提高代码的健壮性和容错性。此外优化后还增加了对图像的保存流程

优化后完整代码

#include <iostream>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;void changeBackground(const Mat& inputImage, const Scalar& backgroundColor, const Scalar& lowerBound, const Scalar& upperBound)
{// 图片转为hsv格式Mat hsv;cvtColor(inputImage, hsv, COLOR_BGR2HSV);// 在指定范围内的变为白色,不在范围内的变为黑色Mat mask;inRange(hsv, lowerBound, upperBound, mask);imwrite("D:/QtProject/mask1.png", mask);// 取反操作,抠出人像bitwise_not(mask, mask);// 创建新的背景图像Mat newBackground = Mat::zeros(inputImage.size(), inputImage.type());newBackground = backgroundColor;// 将原始图像复制到新背景图像中,只保留前景(人像)区域inputImage.copyTo(newBackground, mask);imshow("New Background Image", newBackground);//保存图片imwrite("D:/QtProject/new_background.png", newBackground);}int main(int argc, char* argv[])
{// 显示一张图片Mat image = imread("D:/QtProject/gege.jpg");imshow("1",image);// 检查图像是否成功加载if (image.empty()){cout << "Failed to load image." << endl;return -1;}// 定义背景颜色、颜色范围Scalar backgroundColor(60,60,220);Scalar lowerBound(100, 43, 46);Scalar upperBound(124, 255, 255);// 更换背景changeBackground(image, backgroundColor, lowerBound, upperBound);// 等待用户按下任意键waitKey(0);return 0;
}

5.总结

通过本篇博客,我们了解了OpenCV实现照片换底色处理的方法和步骤。OpenCV库提供了丰富的图像处理函数和算法,可以帮助我们实现各种各样的图像处理任务。照片换底色处理是其中的一种,通过选择并替换背景颜色,可以为照片增添独特的艺术效果。希望本篇博客能够对读者理解和应用OpenCV库进行图像处理有所帮助。如果有需要Qt和OpenCV下载的同学可以私聊我,欢迎大家共同进步

OpenCV实现照片换底色处理相关推荐

  1. python换照片底色_Python 利用OpenCV给照片换底色的示例代码

    OpenCV的全称是:Open Source Computer Vision Library.OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows和M ...

  2. pyqt5与opencv对照片换底色

    前言 库 opencv-python pyqt5 换色原理 直言的说,在这篇大佬的文章中, (32条消息) Python 教你用OpenCV实现给照片换底色_叶庭云的博客-CSDN博客 可以实现换底色 ...

  3. Python 教你用OpenCV实现给照片换底色

    文章目录 1. 读入并显示图片 2. 缩放图片 3. 彩色图像转换为灰度图像 4. 图片二值化处理 5. 图像的腐蚀和膨胀 6. 遍历像素点进行颜色替换 7. 其他说明 OpenCV的全称是:Open ...

  4. 给照片换底色(python+opencv)

    给照片换底色(python+opencv) 本篇目录:

  5. python换照片底色_详解Python给照片换底色(蓝底换红底)

    现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Python就可以实现. 环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN1 ...

  6. 使用Python制作一个照片换底色的exe程序文件(详细教程)

    文章目录 前言 一.安装相对应的库 二.关于图片处理 1.关于RemoveBg 2.图片处理代码编写 3.窗口图片选择以及提示函数 4.可视化窗口 5.打包成exe程序 写在最后 前言 在校大学生,突 ...

  7. python如何使用图片做背景_Python实现给照片换底色(附代码)

    本篇文章给大家带来的内容是关于Python实现给照片换底色(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Pyt ...

  8. gimp 2 照片 换底色_使用GIMP或Photoshop创建Instagram风格的照片效果

    gimp 2 照片 换底色 You've probably seen lots of vintage photo effects, or maybe even made some of your ow ...

  9. python如何使用图片做背景_用Python批量给照片换底色,基于opencv模块

    现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Python就可以实现. 环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN1 ...

最新文章

  1. 带哨兵节点的链_【算法导论】10.2不带哨兵节点和带哨兵节点的双向链表
  2. 谢文睿:西瓜书 + 南瓜书 吃瓜系列 7. 支持向量机
  3. c语言运动会成绩统计报告,C语言程序设计运动会成绩统计系统1研究报告.doc
  4. 给Resnet加人工经验提升30%的准确率
  5. hive load data inpath 空目录_Hive内部表 | 每日五分钟学大数据
  6. 多尺度熵---Understanding Multiscale Entropy
  7. Golang 随机获取本机可用端口
  8. NAND Flash和NOR Flash的区别
  9. Nucleus PLUS任务调度
  10. 华为荣耀20计算机,华为云电脑将停止服务/荣耀新机保护壳曝光/小米新机渲染图曝光...
  11. 聊聊毕业设计系列 --- 系统实现
  12. 新买的Olmpus 7070,5.1照得几张照片
  13. mysql笛卡尔积效率_SQL优化 MySQL版 -分析explain SQL执行计划与笛卡尔积
  14. 台达DVP PLC与3台西门子V20变频器通讯程序 台达PLC与3台西门子变频器通讯
  15. pytorch实现bert_精细调整bert和roberta以在pytorch中实现高精度文本分类
  16. PCA 实践 利用 PCA 算法对人脸数据集内所有人进行降维和特征提取 PCA原理解析+代码
  17. python 微信授权 昵称乱码解决
  18. C# mschart 控件 框选 删除部分数据 及游标CursorX CursorY 使用
  19. python 画图 设置 中英文字体
  20. LA 4394 刷字符串(区间dp)

热门文章

  1. 北美股市反向ETF和杠杆ETF列表
  2. PHPstudy下载安装
  3. PHP魔术方法中的构造函数(__construct)
  4. 2021年电工(中级)模拟考试题库及电工(中级)模拟考试系统
  5. 如何实现一个IAM系统
  6. 月薪没过万?对不起,你可能还不如搬砖的!
  7. 未来教育所需要的七个知识
  8. 图片处理Photoshop快速给偏暗的圣诞美女美白
  9. javascript编辑表格
  10. 远程桌面连接当前已关闭你的背景 解决远程桌面背景变黑的问题