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

文章目录

前言

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

ROI

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

我之前写过一篇Python 的代码

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

其它的相关文章

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

测试图片

部分区域截取

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

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

python 复制代码
#%%
import cv2
import matplotlib.pyplot as plt
import numpy as np

input_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++

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

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

python 复制代码
#%%
import cv2
import matplotlib.pyplot as plt
import numpy as np

input_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++

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

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

python 复制代码
#%%
import cv2
import matplotlib.pyplot as plt
import numpy as np

input_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从入门到实战 全套课程(附带课程课

相关推荐
陈苏同学5 分钟前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
唐家小妹8 分钟前
介绍一款开源的 Modern GUI PySide6 / PyQt6的使用
python·pyqt
小字节,大梦想22 分钟前
【C++】二叉搜索树
数据结构·c++
吾名招财23 分钟前
yolov5-7.0模型DNN加载函数及参数详解(重要)
c++·人工智能·yolo·dnn
羊小猪~~40 分钟前
深度学习项目----用LSTM模型预测股价(包含LSTM网络简介,代码数据均可下载)
pytorch·python·rnn·深度学习·机器学习·数据分析·lstm
我是哈哈hh43 分钟前
专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结
服务器·数据结构·c++·算法·机器学习·深度优先·剪枝
憧憬成为原神糕手44 分钟前
c++_ 多态
开发语言·c++
郭二哈1 小时前
C++——模板进阶、继承
java·服务器·c++
Marst Code1 小时前
(Django)初步使用
后端·python·django
挥剑决浮云 -1 小时前
Linux 之 安装软件、GCC编译器、Linux 操作系统基础
linux·服务器·c语言·c++·经验分享·笔记