衡阳派盒市场营销有限公司

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

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

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

如何調(diào)用OpenCV庫

新機器視覺 ? 來源:小白學視覺 ? 2023-12-26 10:41 ? 次閱讀

學習計算機視覺最重要的能力應該就是編程了。

圖像初始化操作

#include 
#include
usingnamespacestd;
usingnamespacecv;
intmain(intargc,char** argv)
{
  //這些方式都是自己擁有獨立的內(nèi)存空間
 Matimg1(2,2, CV_8UC3, Scalar(0,0,255));
 cout<< img1 <

圖像二值化操作

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

#include 
#include
usingnamespacestd;
usingnamespacecv;
intmain(intargc,char** argv)
{
 Mat image = imread("lol1.jpg", CV_LOAD_IMAGE_GRAYSCALE);//注意了,必須是載入灰度圖
 if(image.empty())
 {
   cout<

腐蝕操作

#include
#include
usingnamespacecv;
usingnamespacestd;
intmain()
{
 Mat SrcPic = imread("lena.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();
 return0;
}

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

#include
#include
usingnamespacecv;
usingnamespacestd;
intmain()
{
 Mat SrcPic = imread("lena.jpg");
 imshow("Src Pic", SrcPic);
 Mat DstPic;
 blur(SrcPic, DstPic, Size(7,7));
 imshow("均值模糊效果圖", DstPic);
 waitKey();
 return0;
}

canny邊緣檢測

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

#include
#include
usingnamespacecv;
usingnamespacestd;
intmain()
{
 Mat SrcPic = imread("lena.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));
 //運行canny算子
 Canny(edge, edge,3,9,3);
 imshow("邊緣提取效果", edge);
 waitKey();
 return0;
}

轉(zhuǎn)為灰度圖

#include 
#include
usingnamespacestd;
usingnamespacecv;
intmain()
{
 Mat img = imread("lol1.jpg");
 Mat dstImg;
 cvtColor(img, dstImg,COLOR_BGR2GRAY);//從宏名字就可以知道,是彩色圖轉(zhuǎn)換到灰度圖
 imshow("灰度圖", dstImg);
 waitKey(0);
}

訪問圖片中像素

#include 
#include
usingnamespacestd;
usingnamespacecv;
//訪問每個像素,我喜歡使用指針的方式
intmain()
{
 Mat img = imread("lol1.jpg");
 for(inti =0; i < img.rows; i++)
? ?{
? ? ? ?uchar* data = img.ptr(i); //獲取第i行地址
   for(intj =0; j < img.cols; j++)
? ? ? ?{
? ? ? ? ? ??printf("%d
",data[j]);
? ? ? ?}
? ?}
? ?waitKey(0);
}

直方圖均衡化

#include 
#include
usingnamespacestd;
usingnamespacecv;
//直方圖均衡化
intmain()
{
 Mat img = imread("lol3.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 
#include

usingnamespacestd;
usingnamespacecv;

//常見數(shù)據(jù)結(jié)構(gòu)使用方法總結(jié)
intmain()
{
 //Mat的用法
 Matm1(2,2, CV_8UC3, Scalar(0,0,255));//其中的宏的解釋:CV_[位數(shù)][帶符號與否][類型前綴]C[通道數(shù)]
 cout << m1 << endl;

? ?//或者,利用IplImage指針來初始化,將IplImage*轉(zhuǎn)化為Mat
? ?IplImage* image = cvLoadImage("lena.jpg");
? ?Mat mat = cvarrToMat(image);

? ?//Mat轉(zhuǎn)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);

}

結(jié)束語

審核編輯:黃飛

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

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

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

收藏 人收藏

    評論

    相關推薦

    Vitis HLS工具在Standalone模式下調(diào)用Xilinx Vision Library L1 API例程

    在論壇上遇到在高層次綜合工具中調(diào)用視覺遇到的大多數(shù)問題都和 opencv 以及Xilinx Vision 的安裝路徑有關,如今 Vit
    發(fā)表于 07-25 04:14 ?1882次閱讀
    Vitis HLS工具在Standalone模式下<b class='flag-5'>調(diào)用</b>Xilinx Vision Library L1 API例程

    Qt使用openCV

    使用Qt加OpenCV進行數(shù)字圖像處理了還是很不錯的,參考網(wǎng)上一個帖子分享一下經(jīng)驗:環(huán)境:Windows下的Qt4.7.0安裝qt-sdk-win-opensource-4.7下載OpenCV
    發(fā)表于 11-22 16:12

    labview調(diào)用opencv

    請問誰會labview調(diào)用opencv,我想調(diào)用opencv里人臉識別的功能,求指點
    發(fā)表于 06-21 18:24

    labview無法調(diào)用opencv的dll怎么回事?

    labview201332位的,opencv dll也配制成了32位的,電腦是64位的,然后生成了dll文件里導出了兩個函數(shù),一個是普通的相加函數(shù),labview可以正常調(diào)用運行;另一個讀取了一張
    發(fā)表于 06-20 10:56

    人臉識別歷程中的opencv是1.0還是emcv版本?

    Q1.這個歷程中的opencv是否是1.0還是emcv版本啊?Q2.看到里面好多opencv中有的函數(shù)并沒有調(diào)用,而是重寫了一個(比如轉(zhuǎn)
    發(fā)表于 10-28 14:31

    LabVIEW+Python+openCV

    現(xiàn)在網(wǎng)上一般關于LabVIEW做視覺常規(guī)會用到NI Vision工具包,以及openCV的動態(tài)鏈接,實現(xiàn)LabVIEW調(diào)用openCV的功能,但是NI Vision工具包除非破解,正
    發(fā)表于 12-07 20:59

    怎樣去生成能在Qt中應用的opencv

    請問如何生成適用于arm版的opencv,能在Qt中應用。(想在Qt中開發(fā)opencv相關的功能,需要調(diào)用opencv,我用別的交叉工具鏈
    發(fā)表于 12-30 06:58

    ok5718怎么調(diào)用arm環(huán)境下的opencv2來進行交叉編譯cpp呢?

    現(xiàn)成的交叉編譯后的opencv2以及依賴嗎,在哪里?或者說該怎么調(diào)用arm環(huán)境下的opencv2來進行交叉編譯cpp呢?[/td]
    發(fā)表于 11-21 13:41

    Android系統(tǒng)下OpenCV的人臉檢測模塊的設計

    針對解決OpenCV人臉檢測模塊在Android平臺編譯和移植的問題,提出一種利用JNI技術(Java Native Interface)調(diào)用OpenCV以及采用Android NDK(Native Development Ki
    發(fā)表于 11-07 17:40 ?118次下載
    Android系統(tǒng)下<b class='flag-5'>OpenCV</b>的人臉檢測模塊的設計

    調(diào)用攝像頭_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:調(diào)用攝像頭
    發(fā)表于 06-06 15:39 ?1次下載

    如何使用Python來調(diào)用OpenCV

    果您的電腦是win10的系統(tǒng),那么請您按下win鍵,再按下空格鍵,輸入Python,進入Python的IDEA shell界面。這個時候您也可以直接進入CMD進行民命令行模式的編輯,因為第一次可我們并不會很多的代碼需要您去編輯。在后期您可以使用輕量級的IDEA,比如sublime test3 或者重量級的Pycharm IDEA進行編輯,它們都是現(xiàn)在世界上十分常用的Python編譯器,用它們進行編輯,會給你們一種視覺上的清新之感以及靈魂上的愉悅之感呢。
    發(fā)表于 05-15 18:10 ?3次下載
    如何使用Python來<b class='flag-5'>調(diào)用</b><b class='flag-5'>OpenCV</b><b class='flag-5'>庫</b>

    Arduino直接調(diào)用沒有原復雜調(diào)用有用的數(shù)據(jù)

    本文檔的主要內(nèi)容詳細介紹的是Arduino直接調(diào)用沒有原復雜調(diào)用有用的數(shù)據(jù)免費下載。
    發(fā)表于 03-04 08:00 ?5次下載

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

    學習計算機視覺最重要的能力應該就是編程了,為了幫助小伙伴盡快入門計算機視覺,小白準備了【走進OpenCV】系列,主要幫助小伙伴了解如何調(diào)用OpenCV,涉及到的知識點會做簡單講解。
    的頭像 發(fā)表于 09-08 10:26 ?5004次閱讀

    在LabVIEW中調(diào)用OpenVINO? 模型

    自帶機器視覺函數(shù),并提供OpenCV接口,開發(fā)機器視覺與自動化應用程序速度快使用LabVIEW調(diào)用OpenVINO IR模型,可以快速完成深度學習項目開發(fā)與交付。
    的頭像 發(fā)表于 03-21 10:05 ?3820次閱讀

    opencv-python和opencv一樣嗎

    -Python是OpenCV的一個Python語言接口,它允許開發(fā)者使用Python語言來調(diào)用OpenCV的功能。 雖然OpenCV
    的頭像 發(fā)表于 07-16 10:38 ?1405次閱讀
    新濠百家乐官网娱乐城 | 百家乐官网赌场赌场网站| 百家乐官网变牌器批发| 宾阳县| 百家乐官网赢钱| 顶尖百家乐官网的玩法技巧和规则| 明陞百家乐官网娱乐城| 百家乐不倒翁注码| 娱乐百家乐的玩法技巧和规则| 六合彩大全| 盈丰会| 百家乐官网视频游戏双扣| 赤壁百家乐官网娱乐城| 单双和百家乐游戏机厂家| 手机百家乐游戏| 澳门百家乐必胜| 百家乐官网在线娱乐场| 现金百家乐技巧| 大发888娱乐场手机版| 百家乐官网如何看面| 百家乐官网赌博现金网| 百家乐方法技巧| 大发888娱乐城官方下载安装| 玩百家乐官网如何看路| 百家乐官网赢钱面面观| 百家乐游戏客户端| 一路发| 澳门百家乐官网单注下注| 百家乐赌场论坛博客| 和乐娱乐| 大丰收百家乐官网的玩法技巧和规则 | 百家乐官网真人博彩的玩法技巧和规则 | 百家乐资深| 百家乐官网打法分析| 网上百家乐作弊不| 大发888娱乐游戏下载| 太阳城百家乐官网看牌| 至尊百家乐年代| 时时博娱乐城| 百家乐公式计算| 大发888娱乐场奖金|