当前位置: 首页 > article >正文

OpenCV多通道图像混合(六)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenCvSharp;

namespace _03_多通道图像混合
{
internal class Program
{
static void Main(string[] args)
{

        if (MultichangeBlending())
        {
            Console.WriteLine("混合成功");
        }
        Cv2.WaitKey(0);
       
    }
    static bool MultichangeBlending()
    {


        #region  多通道混合_蓝色部分

        //1.加载两张图像
   Mat logoImage  =     Cv2.ImRead(@"F:\AI视觉23班\06_OpenCV\images\dota_logo.jpg",ImreadModes.Grayscale);//加载灰度图

     Mat scrImage = Cv2.ImRead(@"F:\AI视觉23班\06_OpenCV\images\dota_jugg.jpg");

        if (logoImage.Data == null &&scrImage.Data == null)
        {
            Console.WriteLine("图像加载失败");
            return false;
        }

        //2.把2通道图像转成3个单通道图像

        Mat[] changles;

        Cv2.Split(scrImage,out changles);

        //3.返回原图的蓝色通道
        Mat iamgeBlue= changles[0];

        //4.将原图的蓝色通道 和logo图进行合
        Cv2.AddWeighted(iamgeBlue[new Rect(500,250, logoImage.Cols, logoImage.Rows)]
            ,1.0,logoImage,0.5,0, 
            iamgeBlue[new Rect(500, 250, logoImage.Cols, logoImage.Rows)]);


        //5.将三个单通道重新合并成一个三通道
        Cv2.Merge(changles, scrImage);

        //6.显示
        Cv2.ImShow("合并_蓝色通道", scrImage);


        #endregion


        #region  多通道混合_绿色部分

        //1.加载两张图像
         logoImage = Cv2.ImRead(@"F:\AI视觉23班\06_OpenCV\images\dota_logo.jpg", ImreadModes.Grayscale);//加载灰度图
         scrImage = Cv2.ImRead(@"F:\AI视觉23班\06_OpenCV\images\dota_jugg.jpg");

        if (logoImage.Data == null && scrImage.Data == null)
        {
            Console.WriteLine("图像加载失败");
            return false;
        }

        //2.把2通道图像转成3个单通道图像

        Cv2.Split(scrImage, out changles);

        //3.返回原图的蓝色通道
        Mat iamgeGreen = changles[1];

        //4.将原图的蓝色通道 和logo图进行合
        Cv2.AddWeighted(iamgeGreen[new Rect(500, 250, logoImage.Cols, logoImage.Rows)]
            , 1.0, logoImage, 0.5, 0,
            iamgeGreen[new Rect(500, 250, logoImage.Cols, logoImage.Rows)]);


        //5.将三个单通道重新合并成一个三通道
        Cv2.Merge(changles, scrImage);

        //6.显示
        Cv2.ImShow("合并_绿色通道", scrImage);


        #endregion



        return true;
    }
}

}


http://www.kler.cn/news/317895.html

相关文章:

  • 【Linux 从基础到进阶】 QEMU 虚拟化配置与优化
  • OpenAI最新GPT-o1-preview测评
  • 关于事务的一些梳理
  • Springboot+Shiro+Mybatis+mysql实现权限安全认证
  • 深入解析:高性能 SSE 服务器的设计与实现
  • linux中crontab工具详解
  • React-Native 中使用 react-native-image-crop-picker 在华为手机上不能正常使用拍照功能
  • SQL常用技巧总结
  • ​‌GAS系统​
  • 【Kubernetes】常见面试题汇总(三十六)
  • OMRON欧姆龙通讯模块CI541V1
  • 网络安全:构建数字世界的坚固防线
  • MVCC机制解析:提升数据库并发性能的关键
  • Golang如何优雅的退出程序
  • MyBatis错误处理与日志
  • golang学习笔记31——golang 怎么实现枚举
  • 力扣2563.统计公平数对的数目
  • 【chromedriver编译-绕过selenium机器人检测】
  • st7735 stm32f103 lvgl调试记录3,spi篇
  • vue3ElementPlus使两个日期联动控制(限制结束时间为开始时间的一个月)
  • fastadmin本地安装插件提示”请从官网渠道下载插件压缩包(code:2)(code:1)“
  • iPhone 16 开始支持全新的 JPEG XL 格式
  • API 架构(RPC和RESTful)
  • 跳转页面(持续更新...)
  • 软件架构设计原则
  • mysql如何替换数据库所有表中某些字段含有的特定值
  • 虚拟机centos_7 配置教程(镜像源、配置centos、静态ip地址、Finalshell远程操控使用)
  • 目标检测基本知识
  • 线性dp 总结详解
  • Vue3:$refs和$parent实现组件通信