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

OpenCV实现BGR2BayerGB/BG格式的转换

1、说明

OpenCV没有提供从BGR生成Bayer格式的接口,需要自己写
OpenCV定义为4种格式,分别为:
BGGR排列 -> RG格式
RGGB排列 -> BG格式
GRBG排列 -> GB格式
GBRG排列 -> GR格式

2、转换

void CUtils::BGR2BayerGB(const cv::Mat &matSrc, cv::Mat &matDst) //BGR格式转换为BayerGB格式
{//GRBG排列 -> GB格式matDst = cv::Mat(matSrc.size(), CV_8UC1, cv::Scalar::all(0));for (int y = 0; y < matSrc.rows; ++y){for (int x = 0; x < matSrc.cols; ++x){cv::Vec3b colorSrc = matSrc.at<cv::Vec3b>(y, x);uchar colorDst = 0;if (y % 2 == 0){colorDst = (x % 2 == 0) ? colorSrc[1] : colorSrc[2]; //G:R}else{colorDst = (x % 2 == 0) ? colorSrc[0] : colorSrc[1]; //B:G}matDst.at<uchar>(y, x) = colorDst;}}
}void CUtils::BGR2BayerBG(const cv::Mat &matSrc, cv::Mat &matDst) //BGR格式转换为BayerBG格式
{//RGGB排列 -> BG格式matDst = cv::Mat(matSrc.size(), CV_8UC1, cv::Scalar::all(0));for (int y = 0; y < matSrc.rows; ++y){for (int x = 0; x < matSrc.cols; ++x){cv::Vec3b colorSrc = matSrc.at<cv::Vec3b>(y, x);uchar colorDst = 0;if (y % 2 == 0){colorDst = (x % 2 == 0) ? colorSrc[2] : colorSrc[1]; //R:G}else{colorDst = (x % 2 == 0) ? colorSrc[1] : colorSrc[0]; //G:B}matDst.at<uchar>(y, x) = colorDst;}}
}

3、测试

void Widget::on_pushButton_BGR2BayerBG_clicked()
{QFileDialog *fileDlg = new QFileDialog(this);fileDlg->setWindowTitle(tr("打开图片"));QStringList qstrFilters;qstrFilters << "picture(*.bmp;*.jpg;*.png)";fileDlg->setNameFilters(qstrFilters);            //设置文件过滤器fileDlg->setFileMode(QFileDialog::ExistingFile); //设置选择单文件,如果是多个文件就写成ExistingFilesfileDlg->setAcceptMode(QFileDialog::AcceptOpen);if (fileDlg->exec() == QDialog::Accepted){QStringList strPathList = fileDlg->selectedFiles();if (strPathList.count() > 0){//文件路径QString file_path = strPathList.at(0);//打开图片cv::Mat m1;m1 = UTILS->readMat(file_path, cv::IMREAD_COLOR);//转换cv::Mat m2;UTILS->BGR2BayerBG(m1, m2);UTILS->writeMat("d:\\test_BGR2BayerBG.bmp", m2);//验证cv::Mat m3;cv::cvtColor(m2, m3, cv::COLOR_BayerBG2BGR);UTILS->writeMat("d:\\test_BayerBG2BGR.bmp", m3);}}fileDlg->close();delete fileDlg;fileDlg = nullptr;
}

相关文章:

OpenCV实现BGR2BayerGB/BG格式的转换

1、说明 OpenCV没有提供从BGR生成Bayer格式的接口,需要自己写 OpenCV定义为4种格式,分别为: BGGR排列 -> RG格式 RGGB排列 -> BG格式 GRBG排列 -> GB格式 GBRG排列 -> GR格式 2、转换 void CUtils::BGR2BayerGB(const cv::Mat &matSrc, cv::Mat &matDst)…...

Gateway网关路由以及predicates用法(项目中使用场景)

1.Gatewaynacos整合微服务 服务注册在nacos上&#xff0c;通过Gateway路由网关配置统一路由访问 这里主要通过yml方式说明&#xff1a; route: config: #type:database nacos yml data-type: yml group: DEFAULT_GROUP data-id: jeecg-gateway-router 配置路由&#xff1a;…...

深入浅出Pytorch函数——torch.nn.init.constant_

分类目录&#xff1a;《深入浅出Pytorch函数》总目录 相关文章&#xff1a; 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…...

centos mysql8解决Access denied for user ‘root‘@‘localhost‘ (using password: YES)

环境 系统&#xff1a;CentOS Stream release 9 mysql版本&#xff1a;mysql Ver 8.0.34 for Linux on x86_64 问题 mysql登录提示 Access denied for user rootlocalhost (using password: YES)解决方法 编辑 /etc/my.cnf &#xff0c;在[mysqld] 部分最后添加一行 skip-…...

Docker实战:Docker常用命令

一、镜像相关 1.1、查看镜像 docker images1.2、拉取镜像 docker pull nginx1.3、保存镜像 docker save -o nginx.tar nginx:latest1.4、移除镜像 docker rmi -f nginx:latest1.5、导入镜像 docker load -i nginx.tar二、容器相关 2.1、启动容器 docker run --name red…...

基于51单片机直流电机转速数码管显示控制系统

一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统&#xff0c;并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节&#xff0c;从而控制其输入信号波形等…...

小程序商品如何指定打印机

有些商家&#xff0c;可能有多个仓库。不同的仓库&#xff0c;存放不同的商品。当客户下单时&#xff0c;小程序如何自动按照仓库拆分订单&#xff0c;如何让打印机自动打印对应仓库的订单呢&#xff1f;下面就来介绍一下吧。 1. 设置订单分发模式。进入管理员后台&#xff0c…...

LLaMA-7B微调记录

Alpaca&#xff08;https://github.com/tatsu-lab/stanford_alpaca&#xff09;在70亿参数的LLaMA-7B上进行微调&#xff0c;通过52k指令数据&#xff08;https://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json&#xff09;&#xff0c;在8个80GB A100上训…...

域名子目录发布问题(nginx、vue-element-admin、uni-app)

域名子目录发布问题&#xff08;nginx、vue-element-admin、uni-app&#xff09; 说明Vue-Element-Admin 代码打包nginx配置&#xff1a;uni-app打包 说明 使用一个域名下子目录进行打包&#xff1a; 比如&#xff1a; http://www.xxx.com/merchant 商户端代码 http://www.xx…...

【环境配置】Windows 10 安装 PyTorch 开发环境,以及验证 YOLOv8

Windows 10 安装 PyTorch 开发环境&#xff0c;以及验证 YOLOv8 最近搞了一台Windows机器&#xff0c;准备在上面安装深度学习的开发环境&#xff0c;并搭建部署YOLOv8做训练和测试使用&#xff1b; 环境&#xff1a; OS&#xff1a; Windows 10 显卡&#xff1a; RTX 3090 安…...

数学建模之“层次分析法”原理和代码详解

一、层次分析法简介 层次分析法&#xff08;Analytic Hierarchy Process&#xff0c;AHP&#xff09;是一种用于多准则决策分析和评估问题的定量方法&#xff0c;常用于数学建模中。它是由数学家托马斯赛蒂&#xff08;Thomas Saaty&#xff09;开发的。 层次分析法将复杂的决…...

使用IText导出复杂pdf

1、问题描述 需要将发票导出成pdf&#xff0c;要求每页都必须包含发票信息和表头行。 2、解决方法 使用IText工具实现PDF导出 IText8文档&#xff1a;Examples (itextpdf.com) 3、我的代码 引入Itext依赖&#xff0c;我这里用的是8.0.1版本 <dependency><groupId>…...

多线程并发服务器(TCP)

服务器 客户端 结果...

uni-app的Vue.js实现微信小程序的紧急事件登记页面功能

主要功能实现 完成发生时间选择功能&#xff0c;用户可以通过日期选择器选择事件发生的时间。实现事件类型选择功能&#xff0c;用户可以通过下拉选择框选择事件的类型。添加子养殖场编号输入框&#xff0c;用户可以输入与事件相关的子养殖场编号。完成事件描述输入功能&#…...

面试题 17.16.按摩师

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;面试题 17.16. 按摩师 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 动态规划&#xff0c;对于第 i 个预约&#xff0c;若接下&#xff0c;其最大值为不接上一个时的最大值与当前值之和&a…...

vscode里配置C#环境并运行.cs文件

vscode是一款跨平台、轻量级、开源的IDE, 支持C、C、Java、C#、R、Python、Go、Nodejs等多种语言的开发和调试。下面介绍在vscode里配置C#环境。这里以配置.Net SDK v5.0&#xff0c;语言版本为C#9.0&#xff0c;对应的开发平台为VS2019&#xff0c;作为案例说明。 1、下载vsc…...

uniapp配置添加阿里巴巴图标icon流程步骤

文章目录 下载复制文件到项目文件夹里项目配置目录结构显示图标 下载 阿里巴巴icon官网 https://www.iconfont.cn/ 复制文件到项目文件夹里 项目配置目录结构 显示图标...

大模型基础02:GPT家族与提示学习

大模型基础&#xff1a;GPT 家族与提示学习 从 GPT-1 到 GPT-3.5 GPT(Generative Pre-trained Transformer)是 Google 于2018年提出的一种基于 Transformer 的预训练语言模型。它标志着自然语言处理领域从 RNN 时代进入 Transformer 时代。GPT 的发展历史和技术特点如下: GP…...

算法基础课——基础算法(模板整理)

快速排序 快速排序 #include <iostream> #include <algorithm> using namespace std; int n; int s[100000]; int main() {cin>>n;for(int i0;i<n;i){cin>>s[i];}sort(s,sn);for(int i0;i<n;i){cout<<s[i]<<" ";}cout<…...

如何解决使用npm出现Cannot find module ‘XXX\node_modules\npm\bin\npm-cli.js’错误

遇到问题&#xff1a;用npm下载组件时出现Cannot find module ‘D&#xff1a;software\node_modules\npm\bin\npm-cli.js’ 问题&#xff0c;导致下载组件不能完成。 解决方法&#xff1a;下载缺少的npm文件即可解决放到指定node_modules目录下即可解决。 分析问题&#xff1…...

Hunyuan-MT Pro实操手册:对接LangChain构建带记忆的多轮专业咨询翻译Bot

Hunyuan-MT Pro实操手册&#xff1a;对接LangChain构建带记忆的多轮专业咨询翻译Bot 1. 项目概述与目标 Hunyuan-MT Pro 是基于腾讯混元翻译模型的现代化Web翻译终端&#xff0c;而今天我们要做的是让它变得更智能——通过集成LangChain框架&#xff0c;构建一个具备对话记忆…...

想转行做产品经理?看看你身上有没有这5个“隐藏技能”

在数字经济飞速发展的当下&#xff0c;产品经理早已不是互联网行业的“专属岗位”&#xff0c;而是横跨互联网、硬件、金融、制造业等多个领域的核心角色——连接用户需求与技术实现&#xff0c;主导产品从创意到落地的全流程&#xff0c;被称为“CEO的学前班”。正因如此&…...

51单片机驱动DS1302:从时序解析到精准电子钟实战

1. 初识DS1302&#xff1a;你的第一个实时时钟芯片 第一次接触DS1302时&#xff0c;我盯着这个只有8个引脚的小芯片看了半天——这么小的东西真的能准确记录时间吗&#xff1f;事实证明它不仅做得到&#xff0c;而且做得很好。DS1302是Dallas公司推出的一款经典实时时钟芯片&am…...

Java开发必备:高德、百度、WGS84坐标互转实战(附完整代码)

Java开发实战&#xff1a;高德、百度与WGS84坐标系互转解决方案 当你需要在不同地图服务之间切换时&#xff0c;坐标系的差异往往会成为开发中的痛点。想象一下这样的场景&#xff1a;你的应用同时接入了高德地图和百度地图&#xff0c;用户上传的GPS数据却无法在两个平台上准确…...

python-flask-djangol框架的的畜牧站疾病防控与检测系统

目录技术选型与架构设计核心功能模块实现数据可视化与决策支持移动端适配与离线功能测试与部署方案项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作技术选型与架构设计 后端采用Python Flask框架&#xff0c;轻量级且灵活性高&…...

如何实现ElasticHQ与ElasticSearch 8.x的完美兼容:未来就绪的监控解决方案

如何实现ElasticHQ与ElasticSearch 8.x的完美兼容&#xff1a;未来就绪的监控解决方案 【免费下载链接】elasticsearch-HQ Monitoring and Management Web Application for ElasticSearch instances and clusters. 项目地址: https://gitcode.com/gh_mirrors/el/elasticsearc…...

别再只用CEC2005了!手把手教你用MATLAB跑通CEC2017测试集(附完整代码)

从CEC2005到CEC2017&#xff1a;MATLAB实战迁移指南与性能优化技巧 当优化算法研究者还在使用CEC2005作为基准测试时&#xff0c;前沿论文早已转向更具挑战性的CEC2017测试集。这个转变不仅仅是数字上的更新&#xff0c;更代表着优化算法评估标准的一次重大飞跃。本文将带你从零…...

OpenClaw轻量化方案实测:nanobot镜像性能与成本对比

OpenClaw轻量化方案实测&#xff1a;nanobot镜像性能与成本对比 1. 为什么选择nanobot镜像 上个月我在尝试用OpenClaw搭建个人自动化助手时&#xff0c;遇到了一个典型的技术选择困境&#xff1a;是直接调用云端大模型API&#xff0c;还是部署本地模型&#xff1f;经过反复权…...

从随机采样到精准决策:蒙特卡罗方法在复杂系统建模中的实践

1. 蒙特卡罗方法&#xff1a;用随机性破解复杂世界的密码 想象你是一位古代数学家&#xff0c;手里只有一把沙子和一块画着方格的石板。现在要计算一个不规则形状的湖泊面积&#xff0c;你会怎么做&#xff1f;最原始的方法可能是把沙子均匀撒在石板上&#xff0c;然后数出落在…...

高效管理惠普OMEN游戏本:OmenSuperHub全面解析与实战指南

高效管理惠普OMEN游戏本&#xff1a;OmenSuperHub全面解析与实战指南 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub OmenSuperHub是一款专为惠普OMEN系列游戏本设计的轻量级系统管理工具&#xff0c;它通过替代原厂Omen Ga…...