opencv三種遍歷畫素及兩種擷取圖片方法
1.最簡單也是最基本的for迴圈
for(int i=0;i<img.rows;++i)
for(int j=0;j<img1.cols;++j)
{
Vec3b pelex;
pelex[0] = 0;
pelex[1] = 0;
pelex[2] = 255;
img1.at<Vec3b>(i, j) = pelex;
}
at()方法是用於讀取或者修改畫素點的方法
2.迭代器迭代法
int i=0;
MatIterator<Vec3b> imgit,imgend; //MatIterator是Mat型別的迭代器
//就是將高維的矩陣轉換為一維矩陣,以我的理解就是一個暫存畫素的容器
for(imgit=img.begin(),imgend=img.end();imgit<imgend;imgit++)
{
++i;
imgit[0]=i%255;
imgit[1]=i%255;
imgit[2]=i%255;
}
3.指標方法遍歷畫素
for(int i=0;i<img.rows;++i)
{
uchar *p=img.ptr<uchar>(i); //獲取第i行第一個畫素的指標
for(int j=0;j<img.cols;++j)
{
p[j][0 ] = (i) % 255;
p[j][1] = (j) % 255;
p[j][2] = (i + j) % 255;
}
指標方法與上述的for方法區別在於不用再呼叫at()方法,在處理大量資料的時候速度回大大加快
//擷取影象區域方法
1.Range()方法
使用Range()方法可以方便地擷取圖片上的某一部分
注意使用時不要超出原圖片的畫素範圍
Mat cut=img(Range(50,100),Range(50,100));
//還有一個all()方法
Mat cut1=img(Range::all(),Range(100,200));
//這兩種方式都可以從原圖上擷取對應的影象部分
經過程式碼實驗,截取出來的影象也是指向原影象的記憶體區域
Mat cut = img1(Range(100, 200), Range::all());
for(int i=100;i<200;++i)
for (int j = 100; j < 200; ++j)
{
Vec3b pilex;
pilex[0] = 0;
pilex[1] = 0;
pilex[2] = 0;
img1.at<Vec3b>(i, j) = pilex;
}
imshow("cut",cut);
imshow("img1", img1);
2.感興趣區域Rect()
Rect()的四個引數分別是影象左上點座標和長寬
Mat temp(img(Rect(10,10,200,200)));
//或
Mat temp1=img(Rect(10,10,100,100));
相關推薦
opencv三種遍歷畫素及兩種擷取圖片方法
1.最簡單也是最基本的for迴圈 for(int i=0;i<img.rows;++i) for(int j=0;j<img1.cols;++j) { Vec3b pelex; pelex[0]
載入影象和遍歷畫素(OpenCV)
#include <iostream> using namespace std; #include <opencv2\opencv.hpp> using namespace cv; void main() { Mat imgMat = imread("0_depth.png
Opencv遍歷畫素和imadjust函式實現
Opencv遍歷畫素有四種方式 第一種 利用opencv中 for (int i = 0; i < nrow; i++) { for (int j = 0; j < ncol; j++) {
二叉樹三種遍歷遞迴及非遞迴實現
二叉樹的三種遍歷方式包括: 前序遍歷中序遍歷後序遍歷 三種遍歷的遞迴方法都非常好實現,而且簡單易懂。非遞迴實現也是通過使用棧來模擬遍歷的過程。順便提一句,能用遞迴做的,基本都能用棧來實現。前序遍歷和中序遍歷的非遞迴寫法相對比較簡單,只需要模擬遍歷過程即可。後序遍歷非遞迴寫
三種遍歷列表裏面序號和值的方法
開始 clas pri border padding span style %s pytho list = [‘html‘, ‘js‘, ‘css‘, ‘python‘] # 方法1 # 遍歷列表方法1:‘ for i in list: print("序號:%s
JavaScript 算法應用: 遍歷DOM樹的兩種方式
pan 方式 In alt script mil 深度優先 info 算法 1 常見的DOM樹結構: 2 DOM數遍歷有兩種方式: 3 廣度優先代碼: 4 深度優先遍歷代碼 JavaScript 算法應用: 遍歷DOM樹的兩種方式
Leetcode 336. Palindrome Pairs 給出一種遍歷字串迴文子串中心的方法
題意 給你n個不同的字串,讓你找出所有的字串對(i, j),使得s(i) + s(j)是迴文串且i不等於j 思路 這題沒有給資料範圍,所以你其實不知道應該給什麼複雜度的演算法,我看了眼Discussion,先確定了下需要的複雜度 複雜度是O(n *
二叉樹 知道其他兩種遍歷方式求另一種
已知先序和中序 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *
Python遍歷目錄檔案的兩種方法
方法一:遞迴法 1 2 3 4 5 6 7 8 import osdef displayDir2(dir): for i in os.listdir(dir): file = os.path.join(dir,i) if
Java中 List的遍歷及三種遍歷方法
Java List遍歷方法 及其效率對比 package com.zbalpha.test; import java.util.ArrayList; import java.util.Iterator; import java.util.List;
二叉樹的建立及三種遍歷方式詳解
建立一個如下圖所示的二叉樹 程式如下: #include<stdio.h> #include<stdlib.h> //定義二叉樹 typedef struct _tree_node { char date; struct tree_node
二叉樹三種遍歷方式及通過兩種遍歷重構二叉樹(java實現)
重構方法參考文章【重構二叉樹(Java實現):https://blog.csdn.net/wangbingcsu/article/details/51372695】 文章目錄 二叉樹類 三種遍歷方式 前序遍歷 中序遍歷 後序遍歷
二叉樹的常見方法及三種遍歷方式 Java 實現
讀完本文你將瞭解到: 樹的分類有很多種,但基本都是 二叉樹 的衍生,今天來學習下二叉樹。 什麼是二叉樹 Binary Tree 先來個定義: 二叉樹是有限個節點的集合,這個集合可以是空集,也可以是一個根節點和至多兩個子二叉樹組成的集合,其中一顆樹叫做根的左子樹,另一棵叫做根的右子樹。
C語言基本資料結構之二(二叉樹的三種遍歷,節點數以及深度演算法)
關於二叉樹的定義,網上有比較好的介紹,在這裡就簡單介紹二叉樹的一些性質 二叉樹的基本性質 1)二叉樹的第i層上至多有 2^(i-1)(i ≥1)個結點; 2)深度為 h 的二叉樹中至多含有 2^h – 1 個結點; 3)若在任意一棵二叉樹中,有 n0 個葉子結點,有 n2
集合的三種遍歷方式
叠代器 whl print 循環 下一個 sys 三種 iterator for 1、for循環 代碼實現: for(int i=0;i<list.size();i++){ product p=list.get(i); System.println(p); } 2、叠
二叉樹求第三種遍歷序列
btree har dex logs 由於 bsp int tin 推理 // 樹的結點的結構: struct TreeNode{ TreeNode* LChild; TreeNode* RChild; char data; };
Python --- 二叉樹的層序建立與三種遍歷
隊列 方式 span 等於 不存在 pos 同時 紅色 ret 二叉樹(Binary Tree)時數據結構中一個非常重要的結構,其具有。。。。(此處省略好多字)。。。。等的優良特點。 之前在刷LeetCode的時候把有關樹的題目全部跳過了,(ORZ:我這種連數據結構都不會的
二叉樹的三種遍歷簡單版
putchar 中序遍歷 ret pri pos 後續遍歷 同學 alloc erro 同學突然向我問二叉樹的三種遍歷代碼。數據結構剛剛學了,自己很吃力的敲了出來。 和老師演示的代碼有很大差距。 #include <stdio.h>#include <
List集合三種遍歷方法
++ next string highlight gpo equal 方法 arraylist bject 一、通過叠代來遍歷List集合,可以刪除List集合中的元素。 import java.util.ArrayList; import java.util.Itera
談談vector容器的三種遍歷方法
封裝 font pri using != 說明 ace rac 三種 說明:本文僅供學習交流。轉載請標明出處。歡迎轉載! ? ? ? ? ?vector容器是最簡單的順序容器,其用法相似於數組。實際上vector的底層實現