前言
C++&Python&Csharp in OpenCV 專欄
【2022B站最好的OpenCV課程推薦】OpenCV從入門到實戰(zhàn) 全套課程(附帶課程課件資料+課件筆記)
ROI
ROI,本意是感興趣區(qū)域。但是使用起來就和PS的截取部分區(qū)域差不多。
我之前寫過一篇Python 的代碼
Python+OpenCV 零基礎(chǔ)學(xué)習(xí)筆記(6):ROI
其它的相關(guān)文章
OpenCV之感興趣區(qū)域ROI(C++實現(xiàn))
測試圖片
部分區(qū)域截取
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++ 的變量當(dāng)函數(shù)使用
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 np
input_img={}
input_img['rgb'] = cv2.imread('Resource\cat.png')
# 截取ROI區(qū)域
input_img['roi'] = input_img['rgb'][0:50,0:200]
# 展示ROI區(qū)域
cv2.imshow('roi',input_img['roi'])
cv2.waitKey(0)
顏色區(qū)域分割
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++ 藍(lán)", 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++ 的變量當(dāng)函數(shù)使用
Mat[] bgr = new Mat[3];
bgr = Cv2.Split(image);
Cv2.ImShow("Csharp 藍(lán)", 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 np
input_img={}
input_img['rgb'] = cv2.imread('Resource\cat.png')
# 截取ROI區(qū)域
input_img['roi'] = input_img['rgb'][0:50,0:200]
# 展示ROI區(qū)域
# 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++ 藍(lán)", 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++ 的變量當(dāng)函數(shù)使用
Mat[] bgr = new Mat[3];
bgr = Cv2.Split(image);
//Cv2.ImShow("Csharp 藍(lán)", bgr[0]);
//Cv2.ImShow("Csharp 綠", bgr[1]);
//Cv2.ImShow("Csharp 紅", bgr[2]);
Mat Merge = new Mat();
//很明顯,CSharp的函數(shù)就好看懂的多
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 np
input_img={}
input_img['rgb'] = cv2.imread('Resource\cat.png')
# 截取ROI區(qū)域
input_img['roi'] = input_img['rgb'][0:50,0:200]
# 展示ROI區(qū)域
# 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()
總結(jié)
后面我就是照著OpenCV Python的視頻寫代碼了,所以之后會調(diào)整一下順序,Python,C++,Csharp的順序?qū)懘a了。
現(xiàn)在主要看的視頻是這個視頻。文章來源:http://www.zghlxwxcb.cn/news/detail-823628.html
【2022B站最好的OpenCV課程推薦】OpenCV從入門到實戰(zhàn) 全套課程(附帶課程課文章來源地址http://www.zghlxwxcb.cn/news/detail-823628.html
到了這里,關(guān)于C++&Python&C# 三語言O(shè)penCV從零開發(fā)(5):ROI截取的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!