在应用颜色的同时对图像应用阴影

2023-12-10

我正在根据 HSV 的 3 个滑块值更改汽车的颜色。我可以改变颜色,但感觉就像油漆。颜色改变后的图像没有原创性。我如何应用阴影和效果。

我如何应用输入图像中的阴影和效果。


您好,您可以参考下面的 C++ 代码,这里我仅更改色调值,如果您想更改饱和度和值,只需创建一个带有滑块位置值的 Mat,并使用适当的通道(sat 或 val)进行添加或减去。

int H=50;  
Mat src, hsv, dst;
char window_name[30] = "HSV Demo";
void HSV_Demo( int, void* );


int main( int argc, char** argv ){

  src = imread( "car.jpg", 1 );
  namedWindow( window_name, CV_WINDOW_AUTOSIZE );
  createTrackbar( "Hue", window_name,&H, 179, HSV_Demo );
  HSV_Demo( 0, 0 );

  while(true)
  {
    int c;
    c = waitKey( 20 );
    if( (char)c == 27 )
     break;

     if( (char)c == 's' ) imwrite("result.jpg",dst);

   }

}


void HSV_Demo( int, void* )
{
  cvtColor(src, hsv,CV_BGR2HSV);
  Mat channel[3];
  split(hsv,channel);
  channel[0].setTo(H);
  Mat tmp[3] = { channel[0],channel[1],channel[2] };
  merge(tmp,3,dst);
  cvtColor(dst, dst,CV_HSV2BGR);
  imshow( window_name, dst );
}

Color1 Color2 Color3 Color4

Edit:-

根据下面的评论,这里是使用 HSV 通过保留阴影创建黑白图像的步骤。

请注意,下面的方法并不完美,因为您可以看到边缘不规则,但您可以尝试下面的方法或改进下面的方法本身。

这个想法很简单,我们将只考虑值通道并添加一些常量(滑块位置)以创建白色并减去以创建黑色,然后使用将其转换为 BGR 图像cvtColor()。如果加法或减法结果超出范围,阴影可能会消失。

在相加或相减之前,我们将通过分割色调(此处为红色)来创建一个掩模图像,并使用常量(滑块位置)和掩模创建一个新的 Mat,以便在相加或相减时背景保持不变。

void HSV_Demo( int, void* )
{
  cvtColor(src, hsv,CV_BGR2HSV);
  Mat channel[3];
  split(hsv,channel);

   Mat thr1,thr2;
   inRange(hsv,Scalar(165,50,50),Scalar(179,255,255), thr1); //Create mask to change to avoid background
   inRange(hsv,Scalar(0,50,50),Scalar(10,255,255), thr2); //Create mask to change to avoid background
   thr1=thr1+thr2;

  if(H>255){
     if(H) H-=255;
     thr1.setTo(H,thr1); //Set the image to add to value which will create white color
    // channel[1].setTo(0);
     channel[2]=channel[2]+thr1;
   }

  else {
    H=255-H;
    thr1.setTo(H,thr1);
    // channel[1].setTo(0);
    channel[2]=channel[2]-thr1;//Set the image to subtract from value which will create black color
   }

  //Convert single channel to BGR
  Mat BGR;
  cvtColor(channel[2], BGR,CV_GRAY2BGR);
  imshow( window_name, BGR );


 /* Mat tmp[3] = { channel[0],channel[1],channel[2] };
  merge(tmp,3,dst);
  cvtColor(dst, dst,CV_HSV2BGR);
  imshow( window_name, dst );*/

}

在上面的代码中,通过取消注释代码,您将得到相同的结果。

Result:-
enter image description here enter image description here

enter image description here enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在应用颜色的同时对图像应用阴影 的相关文章

随机推荐

  • ChunkedInput 在球衣中不起作用

    任何人都可以帮助我为什么java代码有问题并一次性打印所有数据而不是将每个块打印为javascript代码 Java代码 import org glassfish jersey client ChunkedInput import java
  • chatDidReceiveMessage 方法未调用 QuickBlox

    我在用QuickBlox iOS SDK用于聊天 登录 注册工作正常 我也可以发送消息 但委托方法 void chatDidReceiveMessage QBChatMessage message 没有接到电话 这是我用来设置聊天的代码 在
  • 如何向 cmdlet 输出添加一列递增值?

    假设我打电话Get Service并想要分配一个新列ID使用打印递增整数的 cmdlet 输出 以便 ID Status Name DisplayName 0 Running AdobeARMservice Adobe Acrobat Up
  • MAMP PEAR 配置指向本地目录

    我正在使用 MAMP 2 0 5 升级 PEAR 时遇到问题 MAMP 如何升级 PEAR 问题是 PEAR 始终安装在 本地 PEAR 目录中 而不是 MAMP PEAR 目录中 我的 MAMP PEAR 配置如下 sudo Applic
  • WordPress MD5 密码

    我需要通过 PHP 脚本或 MySQL 将用户插入到 Wordpress 博客中 并且我有一个纯文本密码 我想我可以做这样的事情 query INSERT INTO new db wp users user login user pass
  • 将word文档解析为excel文件

    我有一个 Word 文档 其中包含我想要解析为 Excel 文件的数据 源文件长达数百页 我一直在使用 VBA 但我刚刚开始学习该语言 并且在尝试输入 doc 文件时遇到了很多困难 我已经能够使用Open和线路输入语句从 txt 文件中检索
  • Python 中动态表单的 Web Scraper

    我正在尝试填写该网站的表格http www marutisuzuki com Maruti Price aspx 它由三个下拉列表组成 一是汽车型号 二是州 三是城市 前两个是静态的 第三个城市是根据州的值动态生成的 有一个 onclick
  • 如果任何字段包含 NULL,MySQL CONCAT 将返回 NULL

    我的表 设备 中有以下数据 affiliate name affiliate location model ip os type os version cs1 inter Dell 10 125 103 25 Linux Fedora cs
  • Google Apps 脚本表单:e.namedValues 不记录任何内容

    我有一个非常基本的 Google Apps 表单 其中包含两个问题 资源 带有两个选项的单选按钮 和名称 文本字段 我想在提交时选择表单值 因此我设置了一个触发器 在表单提交时 来调用函数 function onFormSubmit e L
  • Perl,使脚本在x秒后超时?

    我一直在搜索这个问题 但令人惊讶的是很难得到一个直接的答案 因为 php 似乎有关于这个主题的更多信息 我需要让我的 perl 脚本在指定的秒数后终止 因为 就像现在一样 它们运行时间太长并堵塞了我的系统 我怎样才能使整个脚本在指定的秒数后
  • Java-改变秋千背景颜色?

    好的 我得到了一个使用 系统 外观的 Swing 应用程序 现在 我想将主面板的背景颜色更改为黑色 太容易了吧 UIManager put Panel background Color BLACK 是的 除了现在应用程序中的控件看起来很愚蠢
  • 如何获取 Windows 中所有打开的命名管道的列表?

    有没有一种简单的方法来测试命名管道是否正常工作 我想确保从应用程序发送的数据确实已发送 有没有一种快速简便的方法来获取所有命名管道的列表 在 Windows Powershell 控制台中 键入 System IO Directory Ge
  • 无法保存/传递父级对组合对象的引用

    在 C 中 它会是这样的struct A由 组成struct B和一些功能B获取指向父对象的指针A 所以函数为A调用该函数B将简单地通过this指向它的指针 我正在 Rust 中尝试此操作 但未能使其正常工作 这就是我想要实现的目标 str
  • 从经典 ASP 调用 COM 对象

    如何从经典 ASP 调用 COM 对象 我努力尝试但找不到好的教程 有什么建议吗 我在经典 ASP 中使用 C 要在经典 ASP 中实例化 COM 对象 Dim rs Set rs Server CreateObject ADODB Rec
  • lxml.html。读取文件时出错;无法加载外部实体

    我正在尝试使用 lxml html 解析从 YouTube 获取电影预告片 url from lxml import html import lxml html from lxml etree import XPath def get yo
  • solr 数据导入错误:索引失败。回滚所有更改

    当我运行 完全导入并清理 命令时 错误是 索引失败 回滚所有更改 我的数据导入配置文件
  • iAds 不适用于 iPad 应用程序吗?

    我有一个 iPad 应用程序 它需要 iAds 但在库中我找不到广告横幅视图 iAds 不适用于 iPad 吗 我使用的是 iOS SDK 4 1 在 iPad 应用程序中实施的其他替代方案是什么 您需要使用 iOS SDK 4 2 因为
  • ScalaTest 可以在没有同步调用的情况下检测超时吗(比如在无限循环中?)

    在下面的代码中 测试称为sleep优雅地失败 而测试freeze导致测试永远不会结束 import org scalatest FunSuite import org scalatest concurrent TimeLimitedTest
  • 如何将 C++ wstring UTF-8 字符打印到 Mac OS 或 Unix 终端?

    我怎样才能打印一个std wstring using std wcout 我尝试了以下推荐的方法here 但它仅适用于打印此 Hola 但不是这个日本 include
  • 在应用颜色的同时对图像应用阴影

    我正在根据 HSV 的 3 个滑块值更改汽车的颜色 我可以改变颜色 但感觉就像油漆 颜色改变后的图像没有原创性 我如何应用阴影和效果 我如何应用输入图像中的阴影和效果 您好 您可以参考下面的 C 代码 这里我仅更改色调值 如果您想更改饱和度