opencv将RGB转成YIQ
最近在做运动检测,需要将RGB通道转换成YIQ通道;
在网上查了很多发现实现的都比较差,现给出RGB转YIQ以及YIQ转回RGB程序
这是RGB转为YIQ的原理
Y代表的是亮度,I、Q是色彩,由于YIQ颜色空间具有能将图像中的亮度分量分离提取出来的优点,所以比较容易在复杂背景下进行运动目标检测
根据变换矩阵,可以比较容易的写出函数—就是一个简单的矩阵相乘
Matx33f rgb2yiq_mat(0.299f, 0.587f, 0.114f,0.596f, -0.274f, -0.322f,0.211f, -0.523f, 0.312f);Matx33f yiq2rgb_mat(1.0f, 0.956f, 0.621f,1.0f, -0.272f, -0.647f,1.0f, -1.106f, 1.703f);Mat rgb2yiq(const Mat& img) {Mat img_out(img.size(), img.type());img_out = img.clone();for (int j = 0; j < img.rows; j++) {for (int i = 0; i < img.cols * 3; i += 3) {Vec3f pixel(img_out.at<float>(j, i + 2), img_out.at<float>(j, i + 1), img_out.at<float>(j, i));pixel = rgb2yiq_mat * pixel;for (int k = 0; k < 3; k++) {img_out.at<float>(j, i + 2 - k) = pixel[k];}}}return img_out;
}Mat yiq2rgb(const Mat& img) {Mat img_out(img.size(), img.type());img_out = img.clone();for (int j = 0; j < img.rows; j++) {for (int i = 0; i < img.cols * 3; i += 3) {Vec3f pixel(img_out.at<float>(j, i + 2), img_out.at<float>(j, i + 1), img_out.at<float>(j, i));pixel = yiq2rgb_mat * pixel;for (int k = 0; k < 3; k++) {if (pixel[k] > 255.0) pixel[k] = 255.0;else if (pixel[k] < 0.0) pixel[k] = 0.0;img_out.at<float>(j, i + 2 - k) = pixel[k];}}}return img_out;
}
rgb2yiq的输入与输出不受限制
给出我的rgb2yiq与matlab的rgb2ntsc的结果图—输入全部为三通道归一化的RGB图
opencv将RGB转成YIQ相关推荐
- OpenCV内存方式,将rgb数据压缩成jpg数据
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <pthread.h& ...
- Opencv的RGB到HSV颜色空间转换
从 RGB 到 HSL 或 HSV 的转换 设 (r, g, b) 分别是一个颜色的红.绿和蓝坐标,它们的值是在 0 到 1 之间的实数.设 max 等价于 r, g 和 b 中的最大者.设 min ...
- 用 Python3 OpenCV 将视频转成字符动画
在介绍如何用 Python3 & OpenCV 将视频转成字符动画之前,先简单的介绍一下 OpenCV 吧,毕竟可能很多小伙伴不太了解: 百度百科: OpenCV是一个基于BSD许可(开源)发 ...
- OpenCV中将RGB数组在内存中压缩成JPEG文件
环境 jpeg库: jpegsr9a 下载地址:http://www.ijg.org/ 编译环境: vs2015 Opencv 3.4.2 一.RGB数组来自BMP文件,直接输出在文件系统上 1.1 ...
- 使用OpenCV滑动条写成的简单调色器,实时输出RGB值
好久没有写博客了,最近在看OpenCV,于是动手写了个简单的RGB调色器,在终端实时输出RGB的值.通过这个程序学习滑动条的使用.程序中主要用到cvCreateTrackbar ,其用法如下: cvC ...
- OpenCV实现RGB颜色空间和HSI颜色空间的相互转换
核心的转换公式: RGB-->HSI 截图来自中科院刘定生老师的<数字图像处理与分析>课件. HSI-->RGB 具体的数学公式参照冈萨雷斯版<数字图像处理(第三版)&g ...
- opencv把图片转换成二进制_如何增强图像,然后使用Python和OpenCV将其转换为二进制图像?...
我创建了一个简单的例子来说明我要做的事情:#!/usr/bin/python #------------------------------------------------------------ ...
- opencv处理dicom图像_图像处理|opencv| 利用opencv把照片变换成素描风格
大家好我是阿猩学长,今天给大家利用图像处理库opencv来把图片转换为素描的风格. 其中利用的编程语言为C++. 话不多说先给大家看看实际的效果图. 原图 处理后的图片 原图 效果图 下面先给大家介绍 ...
- 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图
一. 使用cvCvtColor函数将RGB颜色空间转换到HSV颜色空间 所需函数: 1.cvCvtColor 函数功能:颜色空间转换 函数原型: void cvCvtColor( const CvAr ...
- opencv分离RGB三通道
注:本文非标准教程,仅是总结个人学习过程,可能存在纰漏,如有错误之处欢迎留言告知,非常感谢 本文用RGB通道来改变图像颜色. #include <iostream> #include &l ...
最新文章
- Extjs 基础篇—— Function基础
- 扒出了3867篇论文中的3万个基准测试结果,他们发现追求SOTA其实没什么意义
- python 中shape 1,n 与1的区别
- python bar
- C# 调用Windows API实现两个进程间的通信
- AndroidO Treble架构下HIDL服务Java框架实现
- python画猴子_Python学习笔记(1)
- python中for循环怎么打开_详解Python中for循环的使用
- 线程池(领导者-追随者,生产者-消费者等)小结
- ViT (Vision Transformer) ---- RNN
- Node.js:Node模块简介
- cookie被淘汰_可爱可恨的 Cookie
- android studio : Could not find org.jetbrains.kotlin:kotlin-stdlib-jre7:1.5.31
- 8cm等于多少像素_像素和厘米如何换算
- linux如何卸载谷歌输入法,Linux上使用谷歌输入法
- 运动会加油稿计算机学院150字,学校运动会加油稿150字
- Could not establish connection to...
- 函数的基本概念以及函数封装
- Java课程project(SMAC计算器)----基于JavaSE
- 1.亿级流量电商详情页系统实战--主节点部署redis