OpenCV坐標體系的初步認識

實驗基礎

  本次實驗通過一個簡短的例子,主要來說明下面4個問題:

  1.?坐標體系中的零點坐標為圖片的左上角,X軸為圖像矩形的上面那條水平線;Y軸為圖像矩形左邊的那條垂直線。該坐標體系在諸如結構體Mat,Rect,Point中都是適用的。(OpenCV中有些數據結構的坐標原點是在圖片的左下角,可以設置的)。

  2. 在使用image.at<TP>(x1, x2)來訪問圖像中點的值的時候,x1并不是圖片中對應點的x軸坐標而是圖片中對應點的y坐標。因此其訪問的結果其實是訪問image圖像中的Point(x2, x1)點,即與image.at<TP>(Point(x2, x1))效果相同。

  3. 如果所畫圖像是多通道的,比如說image圖像的通道數時n,則使用Mat::at(x, y)時,其x的范圍依舊是0到image的height,而y的取值范圍則是0到image的width乘以n,因為這個時候是有n個通道,所以每個像素需要占有n列。但是如果在同樣的情況下,使用Mat::at(point)來訪問的話,則這時候可以不用考慮通道的個數,因為你要賦值給獲取Mat::at(point)的值時,都不是一個數字,而是一個對應的n維向量。

  4. 多通道圖像在使用minMaxLoc()函數是不能給出其最大最小值坐標的,因為每個像素點其實有多個坐標,所以是不會給出的。因此在編程時,這2個位置應該給NULL。

實驗代碼及注釋

main.cpp:?

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>using namespace std;
using namespace cv;int main()
{Mat image, image_3c;image.create(Size(256, 256), CV_8UC1);image_3c.create(Size(256, 256), CV_8UC3);   //3通道的圖像image.setTo(0);image_3c.setTo(0);image.at<uchar>(10, 200) = 255; //使用at函數的地方,用的是10,200Point point(20, 100);image.at<uchar>(point) = 250;//使用at函數的地方,用的是Point(10,200)image_3c.at<uchar>(10, 300) = 255;image_3c.at<uchar>(10, 302) = 254;Point point_3c(20, 200);image_3c.at<uchar>(point_3c) = 250;double maxVal = 0; //最大值一定要賦初值,否則運行時會報錯Point maxLoc;minMaxLoc(image, NULL, &maxVal, NULL, &maxLoc);cout << "單通道圖像最大值: " << maxVal << endl;double min_3c, max_3c;//注意多通道在使用minMaxLoc()函數是不能給出其最大最小值坐標的,因為每個像素點其實有多個坐標,所以是不會給出的minMaxLoc(image_3c, &min_3c, &max_3c, NULL, NULL);cout << "3通道圖像最大值: " << max_3c << endl;imshow("image", image);imshow("image_3c", image_3c);waitKey(0);return 0;
}

實驗結果:

  單通道圖像的輸出結果如下所示:

  

  由上圖可以看出,黑色的圖像中有2個白色的點(讀者可以仔細看下,由于只有1個像素點,所以需要自己找下,呵呵)的位置是不同的,因此可以證明Mat::at(x,y)和Mat::at(Point(x, y))是有區別的。

?

  3通道圖像的輸出結果如下所示:

  

  由上圖可以看出,3通道的圖像也是有2個點的,但是程序中在使用Mat::at(x, y)其y的值為300和302,這已經超出了圖像的寬度256。這同時證明了實驗基礎中的第3點。

?

  后臺輸出結果如下:

  

?

  實驗總結:由此可見,平時一定要注意一些細節上的東西。

0


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258937.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258937.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258937.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python爬取知乎live_Python爬蟲 - 簡單抓取百度指數

前言有點忙&#xff0c;沒空寫東西&#xff0c;這是之前寫的&#xff0c;加了些配圖而已 這次要爬的網站是百度指數 正文 一、分析 打開網站(百度指數)&#xff0c;呈現出來是這樣的 如果搜索的話就需要登陸了&#xff0c;如果沒有什么特別頻繁的請求的話&#xff0c;直接登陸復…

在Visual Studio上開發Node.js程序

在Visual Studio上開發Node.js程序 原文:在Visual Studio上開發Node.js程序【題外話】 最近準備用Node.js做些東西&#xff0c;于是找找看能否有Visual Studio上的插件以方便開發。結果還真找到了一個&#xff0c;來自微軟的Node.js Tools for Visual Studio&#xff08;NTVS&a…

Oracle ASM 翻譯系列第十一彈:高級知識 Offline or drop?

Offline or drop? 當一個ASM磁盤不可用時&#xff0c;ASM會把它從磁盤組里移除&#xff0c;對嗎&#xff1f;要看情況&#xff0c;通常取決于ASM版本和磁盤組的冗余級別。因為一個external冗余的磁盤組會直接被dismount&#xff0c;所以主要關注normal和high冗余磁盤組的情況。…

net與樹莓派的情緣-安裝與卸載MySql(五)

安裝MySql sudo apt-get install mysql-server 刪除 mysql sudo apt-get autoremove --purge mysql-server-5.0sudo apt-get remove mysql-serversudo apt-get autoremove mysql-serversudo apt-get remove mysql-common //這個很重要上面的其實有一些是多余的。 清理殘留數據 …

mpls工作原理通俗解釋_用這兩種方法向最終用戶解釋NLP模型的工作原理還是不錯的...

點擊上方關注&#xff0c;All in AI中國上周&#xff0c;我看了一個關于“NLP的實踐特性工程”的演講。主要是關于LIME和SHAP在文本分類可解釋性方面是如何工作的。我決定寫一篇關于它們的文章&#xff0c;因為它們很有趣、易于使用&#xff0c;而且視覺上很吸引人。所有的機器…

向往2的年代

1. JDBC 對插入大量數據如何處理&#xff1f; 2. JAVA反射的使用&#xff0c;如何獲取一個java類的某個方法&#xff1f; 3. 數據庫連接池&#xff08;優化&#xff09; 4. 分布式事務管理轉載于:https://www.cnblogs.com/dragonflyyi/p/3564843.html

C++ limits頭文件的用法(numeric_limits)

初學C的時候&#xff0c;對這個模板很陌生&#xff0c;不知道它到底是做什么用的&#xff0c;今天拿起《C標準程序庫》&#xff0c;出現了它的討論&#xff0c;所以決定好好研究一番。 1. numeric_limits是什么&#xff1f; &#xff08;A&#xff09;《C標準程序庫》&#xff…

三層架構——配置文件

1、配置文件是什么&#xff1f; 配置文件是隨安裝程序一起被安裝到計算機上的文件&#xff0c;里面存放著安裝好的應用程序執行時所須要的參數。 應用程序配置文件是標準的XML文件&#xff0c;XML標記和屬性是區分大寫和小寫的。它能夠按須要更改&#xff0c;開發者可使用配置文…

《嵌入式系統開發之道——菜鳥成長日志與項目經理的私房菜》——02-04項目范圍(Scope)管理...

本節書摘來異步社區《嵌入式系統開發之道——菜鳥成長日志與項目經理的私房菜》一書中的第2章&#xff0c;第2.4節&#xff0c;作者&#xff1a;邱毅凌&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看 02-04項目范圍&#xff08;Scope&#xff09;管理 嵌入式…

flex(入門)之timer的使用,鍵盤,鼠標的監聽

package {import flash.display.Shape;import flash.display.Sprite;import flash.events.Event;import flash.events.KeyboardEvent;import flash.events.MouseEvent;import flash.events.TimerEvent;import flash.utils.Timer;import mx.controls.Label;//窗體大小&#xff0…

python 線程超時設置_python 條件變量Condition(36)

文章首發微信公眾號&#xff0c;微信搜索&#xff1a;猿說python對于線程與線程之間的交互我們在前面的文章已經介紹了 python 互斥鎖Lock / python事件Event , 今天繼續介紹一種線程交互方式 – 線程條件變量Condition.一.線程條件變量Condition相關函數介紹acquire() — 線程…

MsWord 操作總結

轉自&#xff08;http://www.cnblogs.com/eye-like/p/4121219.html&#xff09; Msdn上的word操作api&#xff08;不過只有英文版&#xff0c;英文差的先閃過&#xff09; Word2007的API&#xff1a;http://msdn.microsoft.com/en-us/library/bb257531(voffice.12).aspxWord201…

fwrite,fread and fprintf,fscanf的一些使用體會

這周一直在完成一個任務&#xff0c;就是將訓練出的多個model寫成一個model。其中我們使用了c語言的讀寫方法&#xff0c;搞了一星期&#xff0c; 挖了很多坑&#xff0c;最終都鏟平了。下面列舉出若干有用的知識。 1.fwrite,fread VS fprintf,fscanf的區別 fwrite,fread 讀寫…

《第一桶金怎么賺——淘寶開店創業致富一冊通》一一1.4 淘寶開店創業的流程...

本節書摘來自異步社區出版社《第一桶金怎么賺——淘寶開店創業致富一冊通》一書中的第1章&#xff0c;第1.4節&#xff0c;作者&#xff1a;葛存山&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 1.4 淘寶開店創業的流程 第一桶金怎么賺——淘寶開店創業致…

檢測虛擬機代碼總匯(更新中)

檢測虛擬機代碼 1 004092D0 /. 55 push ebp2 004092D1 |. 8BEC mov ebp,esp3 004092D3 |. 51 push ecx4 004092D4 |. 53 push ebx5 004092D5 |. 68 1D934000 push 0040931D 6 004092DA |. 64:FF35…

兩數之和 python_同一屏幕播放兩個視頻 視頻左右兩個畫面或視頻上下兩個畫面如何制作...

咱們在網上經常可以看到一些視頻畫面是可以在同一屏幕播放兩個視頻&#xff0c;有的是視頻左右兩個畫面或視頻上下兩個畫面這些是如何制作的呢&#xff0c;其實熟悉視頻編輯軟件的網友應該會比較了解這些操作&#xff0c;好嘞&#xff0c;來&#xff0c;現在就讓小編來演示一下…

dlib人臉特征點對齊

前面我們介紹了使用dlib進行人臉檢測&#xff0c;下面我們給出如何使用dlib進行人臉特征點檢測。我們直接貼出代碼。我們的代碼包括如下幾部分功能&#xff1a; 檢測單張圖片檢測一個視頻檢測一個camera 先給出代碼&#xff1a; #include <dlib/image_processing/frontal_…

IOS開發基礎知識--碎片13

1:運行程序報the file couldnt be opened because you dont have permission to view it 解決辦法&#xff1a;項目—>targets->build settings->build options->changed the value of the "Compiler for C/C/Objective-C" to Default Compiler. 2:百度…

《LoadRunner 12七天速成寶典》—第2章2.6節第二個性能測試案例

本節書摘來自異步社區《LoadRunner 12七天速成寶典》一書中的第2章&#xff0c;第2.6節第二個性能測試案例&#xff0c;作者陳霽&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看。 2.6 第二個性能測試案例云云&#xff1a;烤魚吃得很爽。 戀戀&#xff1a;就…

MongoDB_1

突然想去看下MongoDB的東西&#xff0c;于是有了這篇文章。其實很早以前就看過一些關于NoSql的文章&#xff0c;還記得當時里面有介紹MongoDB的&#xff0c;多瞅了2眼&#xff0c;并且在Window下安裝了MongoDB的驅動&#xff0c;小玩了會。今天重新翻出來&#xff0c;沒成想在命…