【OpenCV 基础知识 4】分离图像通道

cvSplit()是openCV中的一个函数,它分别复制每个通道到多个单通道图像。

void cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1, CvArr* dst2, CvArr* dst3 );.cvSplit()函数将复制src的各个通道到图像dst0,dst1,dst2和dst3中。如果源图像少于4个通道的情况下,那么传递给cvSplit()的不必要的目标参数可设置为NULL。

cvSum函数

其结构

CvScalar cvSum(//计算arr各通道所有像素总和 CvArr* arr//目标矩阵 );

js 复制代码
program cv_Sum;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils,
  ocv.highgui_c,
  ocv.core_c,
  ocv.core.types_c,
  ocv.imgproc_c,
  ocv.imgproc.types_c,
  uResourcePaths;

const
  filename = cResourceMedia + 'cat2.jpg';

var
  img: pIplImage;
  channels: array [0 .. 2] of pIplImage;
  BGRSum: Array [0 .. 2] of TCvScalar;
  i, total: Integer;

begin
  try

    img := cvLoadImage(filename);

    for i := 0 to 2 do
      channels[i] := cvCreateImage(cvGetSize(img), 8, 1);

    cvSplit(img, channels[0], channels[1], channels[2]);

    for i := 0 to 2 do
      BGRSum[i] := cvSum(channels[i]);

    total := img^.width * img^.height * 255;

    WriteLn('Color percentage of RGB(ex red 50%, green 25% and blue %25) in an image is');

    WriteLn('red:   ', BGRSum[2].val[0] / total * 100:2:2);
    WriteLn('green: ', BGRSum[1].val[0] / total * 100:2:2);
    WriteLn('blue:  ', BGRSum[0].val[0] / total * 100:2:2);

    cvNamedWindow('channels0');
    cvShowImage('channels0', channels[0]);
    cvNamedWindow('channels1');
    cvShowImage('channels1', channels[1]);
    cvNamedWindow('channels2');
    cvShowImage('channels2', channels[2]);
    cvWaitKey();
    readln;
  except
    on E: Exception do
      WriteLn(E.ClassName, ': ', E.Message);
  end;

end.
相关推荐
逐·風15 分钟前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
Devil枫1 小时前
Vue 3 单元测试与E2E测试
前端·vue.js·单元测试
尚梦1 小时前
uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
前端·小程序·uni-app
GIS程序媛—椰子2 小时前
【Vue 全家桶】6、vue-router 路由(更新中)
前端·vue.js
前端青山2 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
毕业设计制作和分享3 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
从兄3 小时前
vue 使用docx-preview 预览替换文档内的特定变量
javascript·vue.js·ecmascript
ctrey_4 小时前
2024-11-1 学习人工智能的Day20 openCV(2)
人工智能·opencv·学习
清灵xmf4 小时前
在 Vue 中实现与优化轮询技术
前端·javascript·vue·轮询
大佩梨5 小时前
VUE+Vite之环境文件配置及使用环境变量
前端