C++PythonC# 三语言OpenCV从零开发(5):ROI截取

文章目录

  • 前言
  • ROI
    • 测试图片
    • 部分区域截取
      • C++
      • Csharp
      • Python
    • 颜色区域分割
      • C++
      • Csharp
      • Python
    • 颜色通道合并
      • C++
      • Csharp
      • Python
  • 总结

前言

C++&Python&Csharp in OpenCV 专栏

【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程(附带课程课件资料+课件笔记)

ROI

ROI,本意是感兴趣区域。但是使用起来就和PS的截取部分区域差不多。

我之前写过一篇Python 的代码

Python+OpenCV 零基础学习笔记(6):ROI

其它的相关文章

OpenCV之感兴趣区域ROI(C++实现)

测试图片

在这里插入图片描述

部分区域截取

C++

#include <opencv2/opencv.hpp>  
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
#include <opencv2/imgproc.hpp>  
#include<iostream>  
using namespace std;
using namespace cv;
int main()
{Mat image = imread("D:/workspace/program/OpenCV/c--csharp--python--open-cv/Resources/cat.png");//截取图片,Range是范围,第一个是高度范围,第二个是宽度范围Mat roi = image(Range(0,50),Range(0,200));imshow("C++", roi);waitKey(0);destroyAllWindows();return 0;
}

在这里插入图片描述

Csharp

using OpenCvSharp;namespace _1_HelloOpenCV
{internal class Program{static void Main(string[] args){Mat image = Cv2.ImRead("D:/workspace/program/OpenCV/c--csharp--python--open-cv/Resources/cat.png");//Csharp里面都是方法,不能直接使用C++ 的变量当函数使用Mat roi = image.SubMat(new OpenCvSharp.Range(0,50), new OpenCvSharp.Range(0, 200));Cv2.ImShow("CSharp", roi);Cv2.WaitKey(0);Cv2.DestroyAllWindows();//Console.WriteLine("Hello, World!");Console.ReadKey();}}
}

在这里插入图片描述

Python

#%%
import cv2
import matplotlib.pyplot as plt
import numpy as npinput_img={}input_img['rgb'] = cv2.imread('Resource\cat.png')
# 截取ROI区域
input_img['roi'] = input_img['rgb'][0:50,0:200]
# 展示ROI区域
cv2.imshow('roi',input_img['roi'])
cv2.waitKey(0)

在这里插入图片描述

颜色区域分割

Opencv-C++笔记 (9) : opencv-多通道分离和合并

C++

#include <opencv2/opencv.hpp>  
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
#include <opencv2/imgproc.hpp>  
#include<iostream>  
using namespace std;
using namespace cv;
int main()
{Mat image = imread("D:/workspace/program/OpenCV/c--csharp--python--open-cv/Resources/cat.png");Mat bgr[3];split(image,bgr);imshow("C++ 蓝", bgr[0]);imshow("C++ 绿", bgr[1]);imshow("C++ 红", bgr[2]);waitKey(0);destroyAllWindows();return 0;
}

在这里插入图片描述

Csharp

using OpenCvSharp;namespace _1_HelloOpenCV
{internal class Program{static void Main(string[] args){Mat image = Cv2.ImRead("D:/workspace/program/OpenCV/c--csharp--python--open-cv/Resources/cat.png");//Csharp里面都是方法,不能直接使用C++ 的变量当函数使用Mat[] bgr = new Mat[3];bgr = Cv2.Split(image);Cv2.ImShow("Csharp 蓝", bgr[0]);Cv2.ImShow("Csharp 绿", bgr[1]);Cv2.ImShow("Csharp 红", bgr[2]);Cv2.WaitKey(0);Cv2.DestroyAllWindows();//Console.WriteLine("Hello, World!");Console.ReadKey();}}
}

在这里插入图片描述

Python

#%%
import cv2
import matplotlib.pyplot as plt
import numpy as npinput_img={}input_img['rgb'] = cv2.imread('Resource\cat.png')
# 截取ROI区域
input_img['roi'] = input_img['rgb'][0:50,0:200]
# 展示ROI区域
# cv2.imshow('roi',input_img['roi'])# 截取颜色通道
b,g,r = cv2.split(input_img['rgb'])
# 将RGB更新到字典中
input_img.update({'r':r,'g':g,'b':b
})
# 展示BGR画面
cv2.imshow('b',input_img['b'])
cv2.imshow('g',input_img['g'])
cv2.imshow('r',input_img['r'])cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

颜色通道合并

C++

#include <opencv2/opencv.hpp>  
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
#include <opencv2/imgproc.hpp>  
#include<iostream>  
using namespace std;
using namespace cv;
int main()
{Mat image = imread("D:/workspace/program/OpenCV/c--csharp--python--open-cv/Resources/cat.png");Mat bgr[3];split(image,bgr);//imshow("C++ 蓝", bgr[0]);//imshow("C++ 绿", bgr[1]);//imshow("C++ 红", bgr[2]);Mat imageMerge;merge(bgr,3,imageMerge);imshow("C++",imageMerge);waitKey(0);destroyAllWindows();return 0;
}

在这里插入图片描述

Csharp

using OpenCvSharp;namespace _1_HelloOpenCV
{internal class Program{static void Main(string[] args){Mat image = Cv2.ImRead("D:/workspace/program/OpenCV/c--csharp--python--open-cv/Resources/cat.png");//Csharp里面都是方法,不能直接使用C++ 的变量当函数使用Mat[] bgr = new Mat[3];bgr = Cv2.Split(image);//Cv2.ImShow("Csharp 蓝", bgr[0]);//Cv2.ImShow("Csharp 绿", bgr[1]);//Cv2.ImShow("Csharp 红", bgr[2]);Mat Merge = new Mat();//很明显,CSharp的函数就好看懂的多Cv2.Merge(bgr, Merge);Cv2.ImShow("Csharp",Merge);//Console.WriteLine("Hello, World!");Cv2.WaitKey(0);Cv2.DestroyAllWindows();Console.ReadKey();}}
}

在这里插入图片描述

Python

#%%
import cv2
import matplotlib.pyplot as plt
import numpy as npinput_img={}input_img['rgb'] = cv2.imread('Resource\cat.png')
# 截取ROI区域
input_img['roi'] = input_img['rgb'][0:50,0:200]
# 展示ROI区域
# cv2.imshow('roi',input_img['roi'])# 截取颜色通道
b,g,r = cv2.split(input_img['rgb'])
# 将RGB更新到字典中
input_img.update({'r':r,'g':g,'b':b
})
# 展示BGR画面
# cv2.imshow('b',input_img['b'])
# cv2.imshow('g',input_img['g'])
# cv2.imshow('r',input_img['r'])# 将BGR合并
input_img['merge']= cv2.merge((input_img['b'],input_img['g'],input_img['r']))print(input_img['merge'])
cv2.imshow('merge',input_img['merge'])cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

总结

后面我就是照着OpenCV Python的视频写代码了,所以之后会调整一下顺序,Python,C++,Csharp的顺序写代码了。

现在主要看的视频是这个视频。

【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程(附带课程课

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/638559.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis Plus baomidou EasyCode插件自动生成驼峰字段实体类,而不是全小写字段实体类

开发环境&#xff1a; springboot 2.4.3baomidou 3.4.0mybatis plus 3.4.0jdk8 问题描述&#xff1a; 1、mybatis 使用baomidou 插件&#xff0c;EasyCode自动生成实体类&#xff0c;但字段都是全部小写的&#xff0c;不太符合编码规范。 2、mysql表字段全是驼峰&#xff0c…

大数据技术原理及应用课实验3 :熟悉常用的HBase操作

目录 实验3 熟悉常用的HBase操作 一、实验目的 二、实验平台 三、实验步骤&#xff08;每个步骤下均需有运行截图&#xff09; &#xff08;一&#xff09;编程实现以下指定功能&#xff0c;并用Hadoop提供的HBase Shell命令完成相同任务&#xff1a; 1.列出HBase所有的表…

科大讯飞将于1月30日发布星火大模型 V3.5,基于全国产化算力底座训练

科大讯飞即将发布全新AI大模型——星火认知大模型 V3.5&#xff0c;该模型将于14:00正式发布。据透露&#xff0c;相比于去年10月24日发布的V3.0版本&#xff0c;V3.5在逻辑推理、文本生成、数学答题及小样本学习能力上均实现了显著提升。 科大讯飞官网链接&#xff1a;讯飞星…

Leetcode的AC指南 —— 栈与队列:20. 有效的括号

摘要&#xff1a; **Leetcode的AC指南 —— 栈与队列&#xff1a;20. 有效的括号 **。题目介绍&#xff1a;给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字…

CMeet系列技术生态沙龙---城市开发者组织年度聚会·杭州 《把握未来趋势,持续学习创新》

CSDN始终致力于促进城市区域内尖端新兴技术开发者交流,提供开放自由的切磋平台。在这个充满挑战和机遇的一年即将结束之际&#xff0c;通过本次聚会&#xff0c;汇聚杭州本地各行各业的开发者朋友&#xff0c;回顾过去一年城市社区的成就和收获&#xff0c;感谢携手同行的各位,…

makefile的机制,执行命令的流程分析

makefile的机制&#xff0c;流程分析 calc:add.o sub.o multi.ogcc add.o sub.o multi.o calc.cpp -o calcadd.o:add.cppgcc -c add.cpp -o add.osub.o:sub.cppgcc -c sub.cpp -o sub.omulti.o:multi.cppgcc -c multi.cpp -o multi.oclean:rm -rf *.o calc按照这个例子分析&am…

常见网站结构

网站架构与部署架构 1、初始阶段的网站架构 一般来讲&#xff0c;大型网站都是从小型网站发展而来&#xff0c;一开始的架构都比较简单&#xff0c;随着业务复杂和用户量的激增&#xff0c;才开始做很多架构上的改进。当它还是小型网站的时候&#xff0c;没有太多访客&#…

数据结构之栈和队列

数据结构之栈和队列 1、栈1.1、栈的定义及基本运算1.2、栈的存储结构 2、队列2.1、队列的定义及基本运算2.2、队列的存储结构2.3、队列的应用 数据结构是程序设计的重要基础&#xff0c;它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从…

FDM3D打印系列——宝可梦妙蛙种子

fdm打印妙蛙种子 大家好&#xff0c;我是阿赵。   每次打印3D模型&#xff0c;都有新的感觉&#xff0c;这次打印了个宝可梦里面的妙蛙种子&#xff0c;也就是俗称的蒜头王八。   先来看看成果&#xff0c;然后在后面再聊一下关于3D打印的一些体会。使用创想三维的Sermoon …

华为机考入门python3--(0)测试题1-句子平均重量

分类&#xff1a;字符串 知识点&#xff1a; 获取输入 input().strip().split(" ") 拼接列表 " ".join(list) 输出指定位数的浮点数 print("%.2f" % value) 题目来自【华为招聘模拟考试】 # If you need to import additional packages or c…

Dell戴尔XPS 8930笔记本电脑原装Win10系统 恢复出厂预装OEM系统

链接&#xff1a;https://pan.baidu.com/s/1eaTQeX-LnPJwWt3fBJD8lg?pwdajy2 提取码&#xff1a;ajy2 原厂系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软件、MyDell等预装程序 文件格式&#xff1a;esd/wim/swm 安装方式&am…

一文梳理金融风控建模全流程(Python)

▍目录 一、简介 风控信用评分卡简介 Scorecardpy库简介 二、目标定义与数据准备 目标定义 数据准备 三、安装scorecardpy包 四、数据检查 五、数据筛选 六、数据划分 七、变量分箱 卡方分箱 手动调整分箱 八、建立模型 相关性分析 多重共线性检验VIF KS和AUC …

李宏毅 Generative Adversarial Network(GAN)生成对抗网络

(延申)GAN Lecture 1 (2018)- Introduction_哔哩哔哩_bilibili Basic Idea of GAN 附课程提到的各式各样的GAN&#xff1a;https://github.com/hindupuravinash/the-gan-zoo 想要让机器做到的是生成东西。->训练出来一个generator。 假设要做图像生成&#xff0c;要做的是…

【Qt之模型视图】5. Qt库提供的视图便捷类

1. 前言 Qt提供了一些便捷的视图类&#xff0c;如QListWidget提供项目列表&#xff0c;QTreeWidget显示多级树结构&#xff0c;QTableWidget提供单元格项的表格。每个类都继承了QAbstractItemView类的行为&#xff0c;QAbstractItemView类实现了项目选择和标题管理的通用行为。…

16.5 参考文献——深度学习定位

16.5 一种高效鲁棒的多楼层室内环境指纹定位方法 同济大学 Zhao Y, Gong W, Li L, et al. An Efficient and Robust Fingerprint Based Localization Method for Multi Floor Indoor Environment[J]. IEEEa Internet of Things Journal, 2023. 2.相关工作 B.基于深度学习的…

固态硬盘优化设置

目录 前言&#xff1a; 关闭Windows Search 禁用系统保护&#xff08;不建议&#xff09; 不建议禁用系统保护原因 关闭碎片整理【机械硬盘】 提升固态硬盘速度 开启TRIM 合理使用固态硬盘的容量 正确关机 关闭开机自启 前言&#xff1a; 电脑配备固态硬盘就能一劳…

自我摸索:如何运营并玩转CSDN?

自注册CSDN以来已有七年之久&#xff0c;但真正运营CSDN也是最近一年的事情&#xff0c;大概就是22年底&#xff0c;参加2022 博客之星 的竞选。接触了很多大佬&#xff0c;也学习模仿着开始玩转CSDN&#xff0c;虽然没有同期运营的大佬们玩的6&#xff0c;但也有一些经验可以来…

this指针相关

一、类对象的存储方式 先说一下结论&#xff1a;一个类的大小&#xff0c;实际就是该类中”成员变量”之和&#xff0c;当然要注意内存对齐 注意空类和没有成员变量的类的大小&#xff0c;编译器给了这两种类一个字节来唯一标识这个类的对象。 class A { public:int _a;int _b…

Python多线程—threading模块

参考&#xff1a;《Python核心编程》 threading 模块的Thread 类是主要的执行对象&#xff0c;而且&#xff0c;使用Thread类可以有很多方法来创建线程&#xff0c;这里介绍以下两种方法&#xff1a; 创建 Thread 实例&#xff0c;传给它一个函数。派生 Thread 的子类&#xf…

计算机体系结构——多处理机系统

一、概述 重要概念 评估指标 通信延迟 通信延迟&#xff1d;发送开销&#xff0b;跨越时间&#xff0b;传输延迟&#xff0b;接收开销 跨越时间 数字信号从发送方的线路端传送到接收方的线路端所经过的时间。 传输时间 全部的消息量除以线路带宽。 多处理机的架构 根…