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

    文章

    4517

    瀏覽量

    122371
  • OpenCV
    +關注

    關注

    32

    文章

    642

    瀏覽量

    42493

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

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

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

    計算機視覺有哪些優缺點

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

    計算機視覺技術的AI算法模型

    計算機視覺技術作為人工智能領域的一個重要分支,旨在使計算機能夠像人類一樣理解和解釋圖像及視頻的信息。為了實現這一目標,計算機
    的頭像 發表于 07-24 12:46 ?1642次閱讀

    opencv-python和opencv一樣嗎

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

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

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

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

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

    計算機視覺的五大技術

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

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

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

    機器人視覺計算機視覺的區別與聯系

    機器人視覺計算機視覺是兩個密切相關但又有所區別的領域。 1. 引言 在當今科技迅猛發展的時代,機器人和計算機視覺技術在各個領域發揮著越來越
    的頭像 發表于 07-09 09:27 ?1113次閱讀

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

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

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

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

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

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

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

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

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

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

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

    隨著人工智能技術的飛速發展,深度學習作為其中的核心技術之一,已經在計算機視覺領域取得了顯著的成果。計算機視覺,作為計算機科學的一個重要分支,
    的頭像 發表于 07-01 11:38 ?1655次閱讀
    主站蜘蛛池模板: 国产成人精品亚洲日本在线 | 色婷婷九月 | 国内一国产农村妇女一级毛片 | 国产乱码1卡一卡二卡 | yy8090韩国日本三理论免费 | 九色国产在视频线精品视频 | 天天干天天色天天干 | 性欧美欧美| 色久优优 欧美色久优优 | 天天干天天透 | 美女在线看永久免费网址 | 精品国产免费久久久久久婷婷 | 2021国产成人精品久久 | 97色爱| 欧美视频免费一区二区三区 | 国产性较精品视频免费 | 免费看男女下面日出水视频 | 4虎影视国产在线观看精品 4虎影院永久地址www | 三级色图| 偷窥自拍亚洲色图 | 操你啦在线视频 | 可以免费看的黄色片 | 婷婷的五月 | 又长又大又粗又硬3p免费视频 | 亚洲视屏一区 | 婷婷色香五月激情综合2020 | 午夜黄| 欧美色欧美亚洲高清在线视频 | 欧美性色xo影院在线观看 | 一二三区在线观看 | 99热手机在线观看 | l欧美18一19sex性 | 国产精品资源手机在线播放 | 天天天狠天天透天天制色 | 成人午夜精品久久久久久久小说 | 欧美尺寸又黑又粗又长 | 高颜值露脸极品在线播放 | 校园春色亚洲欧美 | 五月激情啪啪网 | 222在线视频免费观看 | 日本69sex护士www |