日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

210322阶段三QT事件循环及opencv图像处理

發布時間:2024/4/13 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 210322阶段三QT事件循环及opencv图像处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 一、學習的知識點
    • 1.QT事件循環機制
      • 1.1QT是事件驅動的。QT將系統產生的信號(軟件中斷)轉換成QT事件,并且將事件封裝成類,所有的事件類都是QEvent派生的,事件的產生和處理就是QT程序的主軸,伴隨著整個程序的運行周期。
      • 1.2QT事件由QObject接收,QObject是所有QT類的基類,是QT對象模型的核心。QObject類的三大核心功能之一就是 事件處理。QObject通過event函數調用獲取事件,通過繼承QObject并重定義event函數實現自定義事件的處理
      • 1.3QT事件處理的流程:事件有別于信號的重要一點,事件是一個類對象具有特定的類型,事件多數情況被分發到一個隊列(事件隊列)中,隊列有時間就不停的將隊列中斷時間發送給QObject對象,隊列為空時就阻塞地等待事件。
      • 1.4調用show函數只是發生了一個事件,這個事件放在隊列中,要等程序空閑才能真正顯示,或者使用qApp->processevents(),可以立即處理隊列中的事件。
    • 2.Opencv圖像處理
      • 2.1Mat格式的圖片轉為灰度圖: Mat img,img_new; cvtColor(img,img_new,CV_BGR2GRAY);
      • 2.2灰度圖轉二值圖:threshold(img,img_new,70.0,150.0,THRESH_BINARY); THRESH_BINARY是選擇轉化的算法,灰度大于參數三時,取值參數四,否則取值0,實現二值化
      • 2.3二值圖的腐蝕,擴大黑色部分,使輪廓更平滑,Mat img_erode; Mat elem=getStructuringElement(MORPH_RECT,Size(10,10),Point(-1,-1)); //設置腐蝕參數erode(img_th,img_erode,elem); //腐蝕
      • 2.4 降噪:medianBlur(img_erode,img_erode,3); //第三參數需要為 奇數
      • 2.5 膨脹,擴大白色部分,Mat img_dilate;Mat dilate2=getStructuringElement(MORPH_RECT,Size(5,5));dilate(img_erode,img_dilate,dilate2);
      • 2.6畫輪廓
  • 二、上課沒有聽懂或者沒有理解的地方
  • 三、當天學習的收獲

一、學習的知識點

1.QT事件循環機制

1.1QT是事件驅動的。QT將系統產生的信號(軟件中斷)轉換成QT事件,并且將事件封裝成類,所有的事件類都是QEvent派生的,事件的產生和處理就是QT程序的主軸,伴隨著整個程序的運行周期。

1.2QT事件由QObject接收,QObject是所有QT類的基類,是QT對象模型的核心。QObject類的三大核心功能之一就是 事件處理。QObject通過event函數調用獲取事件,通過繼承QObject并重定義event函數實現自定義事件的處理

1.3QT事件處理的流程:事件有別于信號的重要一點,事件是一個類對象具有特定的類型,事件多數情況被分發到一個隊列(事件隊列)中,隊列有時間就不停的將隊列中斷時間發送給QObject對象,隊列為空時就阻塞地等待事件。

1.4調用show函數只是發生了一個事件,這個事件放在隊列中,要等程序空閑才能真正顯示,或者使用qApp->processevents(),可以立即處理隊列中的事件。

2.Opencv圖像處理

2.1Mat格式的圖片轉為灰度圖: Mat img,img_new; cvtColor(img,img_new,CV_BGR2GRAY);

2.2灰度圖轉二值圖:threshold(img,img_new,70.0,150.0,THRESH_BINARY); THRESH_BINARY是選擇轉化的算法,灰度大于參數三時,取值參數四,否則取值0,實現二值化

2.3二值圖的腐蝕,擴大黑色部分,使輪廓更平滑,Mat img_erode; Mat elem=getStructuringElement(MORPH_RECT,Size(10,10),Point(-1,-1)); //設置腐蝕參數erode(img_th,img_erode,elem); //腐蝕

2.4 降噪:medianBlur(img_erode,img_erode,3); //第三參數需要為 奇數

2.5 膨脹,擴大白色部分,Mat img_dilate;Mat dilate2=getStructuringElement(MORPH_RECT,Size(5,5));dilate(img_erode,img_dilate,dilate2);

2.6畫輪廓

vector< vector<Point> > contours; //存放輪廓數據 原始數據 存在噪點一個輪廓要用到一個vector//CV_RETR_EXTERNAL 檢測外圍輪廓CV_CHAIN_APPROX_SIMPLE 把輪廓拐點的左邊存起來 findContours(img_dilate,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_SIMPLE,Point(0,0)); cout<<"contours"<<contours.size()<<endl;vector< vector<Point> > contours_new(contours.size()); //存放處理后的輪廓數據 vector<Rect> boundRect(contours.size()); int j=contours.size(); int x=0,y=0,w=0,h=0; for (int i=0;i<j;i++) {//opencv的函數 對指定的點集進行多邊形逼近的函數//參數一 輸入的點集 參數二 輸出的點集 參數三 精度 在范圍內則保留 范圍外則丟棄 參數四 曲線閉合 或斷開approxPolyDP(Mat(contours[i]),contours_new[i],3,true); ////取出每一個 點 縫合起來boundRect[i]=boundingRect( Mat(contours_new[i]) ); //用此函數可以得到包裹輪廓的最小矩形x=boundRect[i].x;y=boundRect[i].y;w=boundRect[i].width;h=boundRect[i].height;cout<<"x"<<x<<"y"<<y<<"w"<<w<<"h"<<h<<endl;rectangle(result,Point(x,y),Point(x+w,y+h),Scalar(0,255,0),2,8,0); //在圖片result上繪制邊框}imshow("rec:",result);

二、上課沒有聽懂或者沒有理解的地方

三、當天學習的收獲

學習了qt的事件循環機制,理解了為什么循環show圖片卻不會實時顯示。

總結

以上是生活随笔為你收集整理的210322阶段三QT事件循环及opencv图像处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。