在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

計算機視覺中如何調用OpenCV庫

新機器視覺 ? 來源:博客園 ? 作者:謝玉林 ? 2021-09-08 10:26 ? 次閱讀

學習計算機視覺最重要的能力應該就是編程了,為了幫助小伙伴盡快入門計算機視覺,小白準備了【走進OpenCV】系列,主要幫助小伙伴了解如何調用OpenCV庫,涉及到的知識點會做簡單講解。

圖像初始化操作

#include《opencv2opencv.hpp》 #include《opencv2highguihighgui.hpp》 using namespace std; using namespace cv; int main(int argc, char** argv) { //這些方式都是自己擁有獨立的內存空間 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; //下面都是淺拷貝,指針指向同一個實例 Mat img9 = img8; Mat img10(img8); waitKey(0); return 0; }

圖像二值化操作

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

#include《opencv2opencv.hpp》 #include《opencv2highguihighgui.hpp》 using namespace std; using namespace cv; int main(int argc, char** argv) { Mat image = imread(“lol1.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(“lena.jpg”); imshow(“Src Pic”, SrcPic); Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //getStructuringElement函數返回的是指定形狀和尺寸的結構元素 Mat DstPic; erode(SrcPic, DstPic, element); //腐蝕操作 imshow(“腐蝕效果圖”, DstPic); waitKey(); return 0; }

運行效果

均值濾波實現圖像模糊

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

canny邊緣檢測

思路:將原始圖像轉化為灰度圖,用blur函數進行圖像模糊以降噪,然后用canny函數進行邊緣檢測。

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

轉為灰度圖

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

灰度圖

訪問圖片中像素

#include《opencv2opencv.hpp》 #include《opencv2highguihighgui.hpp》 using namespace std; using namespace cv; //訪問每個像素,我喜歡使用指針的方式 int main() { Mat img = imread(“lol1.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(“lol3.jpg”); imshow(“原始圖”, img); Mat dst; cvtColor(img, img, CV_RGB2GRAY); imshow(“灰度圖”, img); equalizeHist(img, dst); imshow(“直方圖均衡化”, dst); waitKey(0); }

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

常用的數據結構

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

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

//顏色的表示:Scalar(b,g,r);注意不是rgb,注意對應關系 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; //兩個矩形求交集 Rect r4 = r1 & r2; //兩個矩形求并集 waitKey(0); }

結束語

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

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器視覺
    +關注

    關注

    163

    文章

    4485

    瀏覽量

    121792
  • OpenCV
    +關注

    關注

    31

    文章

    641

    瀏覽量

    42219

原文標題:學習Opencv不得不掌握的操作

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Arm KleidiCV與OpenCV集成助力移動端計算機視覺性能優化

    等多種應用。然而,這些計算機視覺應用可能很難實現最優化的延遲性能和處理速度,特別是在內存大小、電池容量和處理能力有限的移動設備上難度更高。 而 Arm KleidiCV 便能在其中大顯身手。該開源
    的頭像 發表于 02-24 10:15 ?424次閱讀

    計算機視覺有哪些優缺點

    計算機視覺作為人工智能領域的一個重要分支,旨在使計算機能夠像人類一樣理解和解釋圖像和視頻的信息。這一技術的發展不僅推動了多個行業的變革,也帶來了諸多優勢,但同時也伴隨著一些挑戰和局限
    的頭像 發表于 08-14 09:49 ?1611次閱讀

    opencv-python和opencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件,它提供了大量的圖像和視頻處理功能。
    的頭像 發表于 07-16 10:38 ?1773次閱讀

    什么是機器視覺opencv?它有哪些優勢?

    機器視覺(Machine Vision)是一種利用計算機和圖像處理技術來模擬人類視覺系統的功能,實現對圖像的識別、分析和理解的技術。OpenCV(Open Source Compute
    的頭像 發表于 07-16 10:33 ?1096次閱讀

    機器視覺計算機視覺有什么區別

    機器視覺計算機視覺是兩個密切相關但又有所區別的概念。 一、定義 機器視覺 機器視覺,又稱為計算機
    的頭像 發表于 07-16 10:23 ?862次閱讀

    計算機視覺的五大技術

    計算機視覺作為深度學習領域最熱門的研究方向之一,其技術涵蓋了多個方面,為人工智能的發展開拓了廣闊的道路。以下是對計算機視覺五大技術的詳細解析,包括圖像分類、對象檢測、目標跟蹤、語義分割
    的頭像 發表于 07-10 18:26 ?2030次閱讀

    計算機視覺的工作原理和應用

    計算機視覺(Computer Vision,簡稱CV)是一門跨學科的研究領域,它利用計算機和數學算法來模擬人類視覺系統對圖像和視頻進行識別、理解、分析和處理。其核心目標在于使
    的頭像 發表于 07-10 18:24 ?2812次閱讀

    計算機視覺與人工智能的關系是什么

    引言 計算機視覺是一門研究如何使計算機能夠理解和解釋視覺信息的學科。它涉及到圖像處理、模式識別、機器學習等多個領域的知識。人工智能則是研究如何使計算
    的頭像 發表于 07-09 09:25 ?1039次閱讀

    計算機視覺與智能感知是干嘛的

    引言 計算機視覺(Computer Vision)是一門研究如何使計算機能夠理解和解釋視覺信息的學科。它涉及到圖像處理、模式識別、機器學習等多個領域,是人工智能的重要組成部分。智能
    的頭像 發表于 07-09 09:23 ?1459次閱讀

    計算機視覺和機器視覺區別在哪

    計算機視覺和機器視覺是兩個密切相關但又有明顯區別的領域。 一、定義 計算機視覺 計算機
    的頭像 發表于 07-09 09:22 ?703次閱讀

    計算機視覺和圖像處理的區別和聯系

    計算機視覺和圖像處理是兩個密切相關但又有明顯區別的領域。 1. 基本概念 1.1 計算機視覺 計算機視覺
    的頭像 發表于 07-09 09:16 ?1953次閱讀

    計算機視覺屬于人工智能嗎

    屬于,計算機視覺是人工智能領域的一個重要分支。 引言 計算機視覺是一門研究如何使計算機具有視覺
    的頭像 發表于 07-09 09:11 ?1809次閱讀

    深度學習在計算機視覺領域的應用

    隨著人工智能技術的飛速發展,深度學習作為其中的核心技術之一,已經在計算機視覺領域取得了顯著的成果。計算機視覺,作為計算機科學的一個重要分支,
    的頭像 發表于 07-01 11:38 ?1359次閱讀

    機器視覺計算機視覺的區別

    在人工智能和自動化技術的快速發展,機器視覺(Machine Vision, MV)和計算機視覺(Computer Vision, CV)作為兩個重要的分支領域,都扮演著至關重要的角色
    的頭像 發表于 06-06 17:24 ?1935次閱讀

    計算機視覺的主要研究方向

    計算機視覺(Computer Vision, CV)作為人工智能領域的一個重要分支,致力于使計算機能夠像人眼一樣理解和解釋圖像和視頻的信息。隨著深度學習、大數據等技術的快速發展,
    的頭像 發表于 06-06 17:17 ?1498次閱讀
    主站蜘蛛池模板: 免费边摸边吃奶边叫床视频gif | 1024人成网站色 | 中国美女乱淫免费看视频 | 国产三级精品在线 | 色狠狠一区二区 | 亚洲一区二区色 | xyx性爽欧美视频 | 男人操女人在线观看 | 俄罗斯毛片基地 | 亚洲爱婷婷色婷婷五月 | 夜间免费视频 | 五月婷婷影视 | 色女人久久 | 欧美日韩一区二区视频图片 | 欧美日韩亚洲国产 | 酒色成人 | 黄网站在线观看高清免费 | www五月| 三级视频网 | 国产欧美一级片 | 五月网址| 午夜免费视频观看在线播放 | 狠狠躁夜夜躁人人爽天天miya | 色综合久久久久久久久五月性色 | 欧美乱强性伦xxxxx | 一区免费 | 亚洲精品久久久久久久蜜桃 | 欧美性猛交xxxx乱大交中文 | 久久15| 四虎精品免费国产成人 | 成年人网站免费观看 | 午夜男人影院 | 美女扒开尿口给男的桶个爽 | 人与禽一级一级毛片 | 亚洲伊人精品综合在合线 | 国产黄色在线 | 亚洲国产一区二区三区a毛片 | 手机看片国产免费现在观看 | 欧美性猛交xxx嘿人猛交 | 成人a级特黄毛片 | 日本亚洲欧美国产日韩ay高清 |