99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

計(jì)算機(jī)視覺中如何調(diào)用OpenCV庫

新機(jī)器視覺 ? 來源:博客園 ? 作者:謝玉林 ? 2021-09-08 10:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

學(xué)習(xí)計(jì)算機(jī)視覺最重要的能力應(yīng)該就是編程了,為了幫助小伙伴盡快入門計(jì)算機(jī)視覺,小白準(zhǔn)備了【走進(jìn)OpenCV】系列,主要幫助小伙伴了解如何調(diào)用OpenCV庫,涉及到的知識點(diǎn)會(huì)做簡單講解。

圖像初始化操作

#include《opencv2opencv.hpp》 #include《opencv2highguihighgui.hpp》 using namespace std; using namespace cv; int main(int argc, char** argv) { //這些方式都是自己擁有獨(dú)立的內(nèi)存空間 Mat img1(2, 2, CV_8UC3, Scalar(0, 0, 255)); cout 《《 img1 《《 endl; int sz[3] = { 2,2,2 }; Mat img2(3, sz, CV_8UC1, Scalar(0, 0, 0)); //cout 《《 img2 《《 endl; Mat img5; img5.create(4, 4, CV_8UC3);

cout 《《 img5 《《 endl; Mat img6 = Mat::zeros(4, 4, CV_8UC3); cout 《《 img6 《《 endl; Mat img7 = img6.clone(); cout 《《 img7 《《 endl; Mat img8; img6.copyTo(img8); cout 《《 img8 《《 endl; //下面都是淺拷貝,指針指向同一個(gè)實(shí)例 Mat img9 = img8; Mat img10(img8); waitKey(0); return 0; }

圖像二值化操作

兩種方法,全局固定閾值二值化和局部自適應(yīng)閾值二值化全局固定閾值很容易理解,就是對整幅圖像都是用一個(gè)統(tǒng)一的閾值來進(jìn)行二值化;局部自適應(yīng)閾值則是根據(jù)像素的鄰域塊的像素值分布來確定該像素位置上的二值化閾值。

#include《opencv2opencv.hpp》 #include《opencv2highguihighgui.hpp》 using namespace std; using namespace cv; int main(int argc, char** argv) { Mat image = imread(“l(fā)ol1.jpg”, CV_LOAD_IMAGE_GRAYSCALE); //注意了,必須是載入灰度圖 if (image.empty()) { cout 《《 “read image failure” 《《 endl; return -1; } // 全局二值化 int th = 100; Mat global; threshold(image, global, th, 255, CV_THRESH_BINARY_INV); // 局部二值化 int blockSize = 25; int constValue = 10; Mat local; adaptiveThreshold(image, local, 255, CV_ADAPTIVE_THRESH_MEAN_C, CV_THRESH_BINARY_INV, blockSize, constValue); imshow(“全局二值化”, global); imshow(“局部二值化”, local); waitKey(0); return 0; }

腐蝕操作

#include 《iostream》 #include 《opencv2opencv.hpp》 using namespace cv; using namespace std; int main() { Mat SrcPic = imread(“l(fā)ena.jpg”); imshow(“Src Pic”, SrcPic); Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //getStructuringElement函數(shù)返回的是指定形狀和尺寸的結(jié)構(gòu)元素 Mat DstPic; erode(SrcPic, DstPic, element); //腐蝕操作 imshow(“腐蝕效果圖”, DstPic); waitKey(); return 0; }

運(yùn)行效果

均值濾波實(shí)現(xiàn)圖像模糊

#include 《iostream》 #include 《opencv2opencv.hpp》 using namespace cv; using namespace std; int main() { Mat SrcPic = imread(“l(fā)ena.jpg”); imshow(“Src Pic”, SrcPic); Mat DstPic; blur(SrcPic, DstPic, Size(7, 7)); imshow(“均值模糊效果圖”, DstPic); waitKey(); return 0; }

canny邊緣檢測

思路:將原始圖像轉(zhuǎn)化為灰度圖,用blur函數(shù)進(jìn)行圖像模糊以降噪,然后用canny函數(shù)進(jìn)行邊緣檢測。

#include 《iostream》 #include 《opencv2opencv.hpp》 using namespace cv; using namespace std; int main() { Mat SrcPic = imread(“l(fā)ena.jpg”); imshow(“Src Pic”, SrcPic); Mat DstPic, edge, grayImage; //創(chuàng)建與src同類型和同大小的矩陣 DstPic.create(SrcPic.size(), SrcPic.type()); //將原始圖轉(zhuǎn)化為灰度圖 cvtColor(SrcPic, grayImage, COLOR_BGR2GRAY); //先使用3*3內(nèi)核來降噪 blur(grayImage, edge, Size(3, 3)); //運(yùn)行canny算子 Canny(edge, edge, 3, 9, 3); imshow(“邊緣提取效果”, edge); waitKey(); return 0; }

轉(zhuǎn)為灰度圖

#include《opencv2opencv.hpp》 #include《opencv2highguihighgui.hpp》 using namespace std; using namespace cv; int main() { Mat img = imread(“l(fā)ol1.jpg”); Mat dstImg; cvtColor(img, dstImg,COLOR_BGR2GRAY);//從宏名字就可以知道,是彩色圖轉(zhuǎn)換到灰度圖 imshow(“灰度圖”, dstImg); waitKey(0); }

灰度圖

訪問圖片中像素

#include《opencv2opencv.hpp》 #include《opencv2highguihighgui.hpp》 using namespace std; using namespace cv; //訪問每個(gè)像素,我喜歡使用指針的方式 int main() { Mat img = imread(“l(fā)ol1.jpg”); for (int i = 0; i 《 img.rows; i++) { uchar* data = img.ptr《uchar》(i); //獲取第i行地址 for (int j = 0; j 《 img.cols; j++) { printf(“%d ”,data[j]); } } waitKey(0); }

直方圖均衡化

#include《opencv2opencv.hpp》 #include《opencv2highguihighgui.hpp》 using namespace std; using namespace cv; //直方圖均衡化 int main() { Mat img = imread(“l(fā)ol3.jpg”); imshow(“原始圖”, img); Mat dst; cvtColor(img, img, CV_RGB2GRAY); imshow(“灰度圖”, img); equalizeHist(img, dst); imshow(“直方圖均衡化”, dst); waitKey(0); }

顯然均衡化后的圖片對比度變高了,變得更加明亮!

常用的數(shù)據(jù)結(jié)構(gòu)

#include《opencv2opencv.hpp》 #include《opencv2highguihighgui.hpp》 using namespace std; using namespace cv; //常見數(shù)據(jù)結(jié)構(gòu)使用方法總結(jié) int main() { //Mat的用法 Mat m1(2, 2, CV_8UC3, Scalar(0, 0, 255)); //其中的宏的解釋:CV_[位數(shù)][帶符號與否][類型前綴]C[通道數(shù)] cout 《《 m1 《《 endl; //或者,利用IplImage指針來初始化,將IplImage*轉(zhuǎn)化為Mat IplImage* image = cvLoadImage(“l(fā)ena.jpg”); Mat mat = cvarrToMat(image);

//Mat轉(zhuǎn)IplImage: IplImage img = IplImage(mat); //或者 Mat m2; m2.create(4, 5, CV_8UC(2)); //點(diǎn)的表示:Point Point p; p.x = 1; //x坐標(biāo) p.y = 1; //y坐標(biāo) //或者 Point p2(1, 1);

//顏色的表示:Scalar(b,g,r);注意不是rgb,注意對應(yīng)關(guān)系 Scalar(1, 1, 1); //尺寸的表示:Size Size(5, 5);// 寬度和高度都是5 //矩形的表示:Rect,成員變量有x,y,width,height Rect r1(0, 0, 100, 60); Rect r2(10, 10, 100, 60); Rect r3 = r1 | r2; //兩個(gè)矩形求交集 Rect r4 = r1 & r2; //兩個(gè)矩形求并集 waitKey(0); }

結(jié)束語

由于時(shí)間和文章篇幅有限,本次總結(jié)先到這里,下次小白會(huì)為小伙伴們帶來OpenCV的濾波操作,各位小伙伴敬請期待。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器視覺
    +關(guān)注

    關(guān)注

    163

    文章

    4595

    瀏覽量

    122883
  • OpenCV
    +關(guān)注

    關(guān)注

    32

    文章

    642

    瀏覽量

    42875

原文標(biāo)題:學(xué)習(xí)Opencv不得不掌握的操作

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Arm KleidiCV與OpenCV集成助力移動(dòng)端計(jì)算機(jī)視覺性能優(yōu)化

    等多種應(yīng)用。然而,這些計(jì)算機(jī)視覺應(yīng)用可能很難實(shí)現(xiàn)最優(yōu)化的延遲性能和處理速度,特別是在內(nèi)存大小、電池容量和處理能力有限的移動(dòng)設(shè)備上難度更高。 而 Arm KleidiCV 便能在其中大顯身手。該開源
    的頭像 發(fā)表于 02-24 10:15 ?565次閱讀

    AR和VR計(jì)算機(jī)視覺

    ):計(jì)算機(jī)視覺引領(lǐng)混合現(xiàn)實(shí)體驗(yàn)增強(qiáng)現(xiàn)實(shí)(AR)和虛擬現(xiàn)實(shí)(VR)正在徹底改變我們與外部世界的互動(dòng)方式。即便是在引人入勝的沉浸式
    的頭像 發(fā)表于 02-08 14:29 ?1558次閱讀
    AR和VR<b class='flag-5'>中</b>的<b class='flag-5'>計(jì)算機(jī)</b><b class='flag-5'>視覺</b>

    AI模型部署邊緣設(shè)備的奇妙之旅:如何在邊緣端部署OpenCV

    1簡介Opencv(OpenSourceComputerVisionLibrary)是一個(gè)基于開源發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺,它實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)
    的頭像 發(fā)表于 12-14 09:10 ?893次閱讀
    AI模型部署邊緣設(shè)備的奇妙之旅:如何在邊緣端部署<b class='flag-5'>OpenCV</b>

    【AI實(shí)戰(zhàn)項(xiàng)目】基于OpenCV的“顏色識別項(xiàng)目”完整操作過程

    OpenCV是一個(gè)廣受歡迎且極為流行的計(jì)算機(jī)視覺,它因其強(qiáng)大的功能、靈活性和開源特性而在開發(fā)者和研究者備受青睞。學(xué)習(xí)
    的頭像 發(fā)表于 12-09 16:42 ?1406次閱讀
    【AI實(shí)戰(zhàn)項(xiàng)目】基于<b class='flag-5'>OpenCV</b>的“顏色識別項(xiàng)目”完整操作過程

    一個(gè)月速成python+OpenCV圖像處理

    OpenCV是一個(gè)廣受歡迎且極為流行的計(jì)算機(jī)視覺,它因其強(qiáng)大的功能、靈活性和開源特性而在開發(fā)者和研究者備受青睞。學(xué)習(xí)
    的頭像 發(fā)表于 11-29 18:27 ?458次閱讀
    一個(gè)月速成python+<b class='flag-5'>OpenCV</b>圖像處理

    工業(yè)中使用哪種計(jì)算機(jī)

    在工業(yè)環(huán)境,工控機(jī)被廣泛使用。這些計(jì)算機(jī)的設(shè)計(jì)可承受極端溫度、灰塵和振動(dòng)等惡劣條件。它們比標(biāo)準(zhǔn)消費(fèi)類計(jì)算機(jī)更耐用、更可靠。工業(yè)計(jì)算機(jī)可控制機(jī)器、監(jiān)控流程并實(shí)時(shí)收集數(shù)據(jù)。其堅(jiān)固的結(jié)構(gòu)和
    的頭像 發(fā)表于 11-29 14:07 ?706次閱讀
    工業(yè)中使用哪種<b class='flag-5'>計(jì)算機(jī)</b>?

    【小白入門必看】一文讀懂深度學(xué)習(xí)計(jì)算機(jī)視覺技術(shù)及學(xué)習(xí)路線

    一、什么是計(jì)算機(jī)視覺?計(jì)算機(jī)視覺,其實(shí)就是教機(jī)器怎么像我們?nèi)艘粯?,用攝像頭看看周圍的世界,然后理解它。比如說,它能認(rèn)出這是個(gè)蘋果,或者那邊有輛車。除此之外,還能把拍到的照片或者視頻轉(zhuǎn)換
    的頭像 發(fā)表于 10-31 17:00 ?1238次閱讀
    【小白入門必看】一文讀懂深度學(xué)習(xí)<b class='flag-5'>計(jì)算機(jī)</b><b class='flag-5'>視覺</b>技術(shù)及學(xué)習(xí)路線

    計(jì)算機(jī)接口位于什么之間

    計(jì)算機(jī)接口是計(jì)算機(jī)硬件和軟件之間、計(jì)算機(jī)與外部設(shè)備之間以及計(jì)算機(jī)各部件之間傳輸數(shù)據(jù)、控制信息和狀態(tài)信息的硬件設(shè)備和軟件程序。它在計(jì)算機(jī)系統(tǒng)
    的頭像 發(fā)表于 10-14 14:02 ?1301次閱讀

    簡述計(jì)算機(jī)總線的分類

    計(jì)算機(jī)總線作為計(jì)算機(jī)系統(tǒng)連接各個(gè)功能部件的公共通信干線,其結(jié)構(gòu)和分類對于理解計(jì)算機(jī)硬件系統(tǒng)的工作原理至關(guān)重要。以下是對計(jì)算機(jī)總線結(jié)構(gòu)和分類
    的頭像 發(fā)表于 08-26 16:23 ?5173次閱讀

    計(jì)算機(jī)中總線的作用是什么

    計(jì)算機(jī)中,總線(Bus)扮演著極其重要的角色,它是計(jì)算機(jī)內(nèi)部各功能部件之間傳送信息的公共通信干線??偩€不僅連接了計(jì)算機(jī)的各個(gè)核心組件,還確保了數(shù)據(jù)、指令和控制信號的高效、準(zhǔn)確傳輸。
    的頭像 發(fā)表于 08-26 15:57 ?3657次閱讀

    計(jì)算機(jī)視覺有哪些優(yōu)缺點(diǎn)

    計(jì)算機(jī)視覺作為人工智能領(lǐng)域的一個(gè)重要分支,旨在使計(jì)算機(jī)能夠像人類一樣理解和解釋圖像和視頻的信息。這一技術(shù)的發(fā)展不僅推動(dòng)了多個(gè)行業(yè)的變革,也帶來了諸多優(yōu)勢,但同時(shí)也伴隨著一些挑戰(zhàn)和局限
    的頭像 發(fā)表于 08-14 09:49 ?2038次閱讀

    邊沿觸發(fā)器在計(jì)算機(jī)中的應(yīng)用

    邊沿觸發(fā)器在計(jì)算機(jī)中的應(yīng)用極為廣泛,它們作為數(shù)字電路的基本單元,對于實(shí)現(xiàn)計(jì)算機(jī)內(nèi)部的時(shí)序控制、數(shù)據(jù)存儲(chǔ)與傳輸、以及復(fù)雜邏輯功能等方面起著至關(guān)重要的作用。以下將從邊沿觸發(fā)器的定義、特點(diǎn)、工作原理及其在
    的頭像 發(fā)表于 08-12 14:20 ?1287次閱讀

    計(jì)算機(jī)視覺的圖像融合

    在許多計(jì)算機(jī)視覺應(yīng)用(例如機(jī)器人運(yùn)動(dòng)和醫(yī)學(xué)成像),需要將多個(gè)圖像的相關(guān)信息整合到單一圖像。這種圖像融合可以提供更高的可靠性、準(zhǔn)確性和數(shù)據(jù)質(zhì)量。多視圖融合可以提高圖像分辨率,并恢復(fù)場
    的頭像 發(fā)表于 08-01 08:28 ?1140次閱讀
    <b class='flag-5'>計(jì)算機(jī)</b><b class='flag-5'>視覺</b><b class='flag-5'>中</b>的圖像融合

    DRAM在計(jì)算機(jī)中的應(yīng)用

    DRAM(Dynamic Random Access Memory,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器)在計(jì)算機(jī)系統(tǒng)扮演著至關(guān)重要的角色。它是一種半導(dǎo)體存儲(chǔ)器,用于存儲(chǔ)和快速訪問數(shù)據(jù),是計(jì)算機(jī)主內(nèi)存的主要組成部分。以下是對DRAM在
    的頭像 發(fā)表于 07-24 17:04 ?2994次閱讀

    計(jì)算機(jī)視覺技術(shù)的AI算法模型

    計(jì)算機(jī)視覺技術(shù)作為人工智能領(lǐng)域的一個(gè)重要分支,旨在使計(jì)算機(jī)能夠像人類一樣理解和解釋圖像及視頻的信息。為了實(shí)現(xiàn)這一目標(biāo),計(jì)算機(jī)
    的頭像 發(fā)表于 07-24 12:46 ?1802次閱讀