在线观看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

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

    關注

    162

    文章

    4406

    瀏覽量

    120739
  • OpenCV
    +關注

    關注

    31

    文章

    635

    瀏覽量

    41559

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

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

收藏 人收藏

    評論

    相關推薦

    計算機視覺有哪些優缺點

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

    opencv-python和opencv一樣嗎

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

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

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

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

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

    計算機視覺的五大技術

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    計算機視覺(Computer Vision, CV)作為人工智能領域的一個重要分支,致力于使計算機能夠像人眼一樣理解和解釋圖像和視頻的信息。隨著深度學習、大數據等技術的快速發展,
    的頭像 發表于 06-06 17:17 ?1125次閱讀

    計算機視覺的十大算法

    隨著科技的不斷發展,計算機視覺領域也取得了長足的進步。本文將介紹計算機視覺領域的十大算法,包括它們的基本原理、應用場景和優缺點。這些算法在圖像處理、目標檢測、人臉識別等領域有著廣泛的應
    的頭像 發表于 02-19 13:26 ?1361次閱讀
    <b class='flag-5'>計算機</b><b class='flag-5'>視覺</b>的十大算法
    主站蜘蛛池模板: 男人的天堂在线精品视频 | 天天做天天爽爽快快 | 天天干夜夜爽天天操夜夜爽视频 | 日本黄页网址 | 欧美资源在线 | 美女一级牲交毛片视频 | 天天上天天操 | 久久亚洲精选 | 国产精品久久久精品视频 | 久久久久琪琪免费影院 | 五月激情六月 | 亚洲地址一地址二地址三 | 中文字幕有码在线视频 | 日本吻胸抓胸激烈视频网站 | 在线成人aa在线看片 | 色偷偷91久久综合噜噜噜噜 | 国产精品久久久福利 | 日本理论片www视频 日本理论午夜中文字幕第一页 | seetube18日本第一次 | 午夜色视频在线观看 | 99成人在线观看 | 大色综合色综合网站 | 国产亚洲欧洲人人网 | 成人免费无毒在线观看网站 | 又粗又大撑满了好爽 | 免费亚洲视频在线观看 | 中文字幕一二三四区 | 香蕉色网 | 欧美日韩一区二区三区视视频 | 加勒比一本一道在线 | 日本在线一区 | 国产人人看| 添人人躁日日躁夜夜躁夜夜揉 | 欧美黄色片视频 | 麻生希痴汉电车avop130 | 222在线视频免费观看 | 免费看啪啪网站 | brazzers720欧美丰满 | 2019国产情侣 | 久操久操| 深爱五月激情网 |