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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在VS中怎么用vb画矩形_(十四)矩形和操作展示逻辑操作

發布時間:2024/7/23 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在VS中怎么用vb画矩形_(十四)矩形和操作展示逻辑操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

時間為友,記錄點滴。

聊了這么多的圖片運算,忽然有個想法,為什么非要用靜態的圖片來展示運算呢?我們可以用自己做的圖片來經過運算后顯示出來。說干就干。


先想一下需求:

  • 整體環境非黑即白。
  • 可以用鼠標在背景上畫出矩形,矩形內容要填充成反色。
  • 可以通過鼠標畫的矩形展示圖片的邏輯操作。
  • 好就這吧,怎么而實現呢?老規矩,大象放冰箱的三步走:

    OpenCV中的矩形類實現

    rect

    創建一個矩形:rect(X0, Y0, width, height), X0/Y0代表矩形的起點,width, height代表矩形的寬和高。這四個變量就把矩形的位置和大小限定了。

    • area(): 面積
    • size(): 尺寸,及[width, height]
    • tl(): 左上頂點坐標
    • br(): 右下頂點坐標
    • width(): 寬度
    • heigth(): 高度
    • contains(Point(x, y)): 是否包含Point點
    • &: rect = rect1 & rect2; 求兩個矩形的交集
    • | : rect = rect1 | rect2; 求兩個矩形的并集
    • ==: rect1 == rect2; 判斷兩個矩形是否相等
    • 平移:rect = rect + Point(x, y); 其實就是對左上頂點坐標做加法
    • 縮放:rect = rect + Size(x, y);其實就是對width和height做加法。
    rectanglevoid
    • img: 可以認為是Mat 類型的Image.
    • pt1: 矩形的一個頂點,比如:rect.tl
    • pt2:矩形的pt1的對立頂點,比如:rect.br
    • color: 矩形的顏色值或者灰度值。
    • thickness: 是否需要填充 thickness>0?不填充:填充
    • lineType: 線的類型,參考LineTypes
    • shift Number of fractional bits in the point coordinates.

    OpenCV中的鼠標實現畫矩形

    鼠標先知道一個函數就夠了

    void
    • winname:窗口的名字
    • onMouse:鼠標響應函數,回調函數。指定窗口里每次鼠標時間發生的時候,被調用的函數指針。 這個函數的原型應該為void on_Mouse(int event, int x, int y, int flags, void* param);
    • userdate:傳給回調函數的參數
    void
    • event: CV_EVENT_*變量之一

    常見的event:

    cv2_EVENT_MOUSEMOVE 鼠標滑動
    cv2_EVENT_LBUTTONDOWN 左鍵點擊
    cv2_EVENT_RBUTTONDOWN 右鍵點擊
    cv2_EVENT_MBUTTONDOWN 中間點擊
    cv2_EVENT_LBUTTONUP 左鍵釋放
    cv2_EVENT_RBUTTONUP 右鍵釋放
    cv2_EVENT_MBUTTONUP 中間釋放
    cv2_EVENT_LBUTTONDBLCLK 左鍵雙擊
    cv2_EVENT_RBUTTONDBLCLK 右鍵雙擊
    cv2_EVENT_MBUTTONDBLCLK 中間雙擊
    • x/y: 鼠標指針在圖像坐標系的坐標(不是窗口坐標系)
    • flags: CV_EVENT_FLAG的組合, param是用戶定義的傳遞到setMouseCallback函數調用的參數。
    cv2_EVENT_FLAG_LBUTTON 左鍵拖拽
    cv2_EVENT_FLAG_RBUTTON 右鍵拖拽

    OpenCV中的圖片邏輯操作

    //邏輯運算:

    好了,完成了構思,和基本的概念,coding。。。

    第一步:先實現一個矩形類,并且把它畫出來,看看基本的&|操作是否有用。

    static

    打印輸出:

    矩形的一些屬性

    圖片輸出的是test1 & test2

    第二步:構造鼠標操作

    注意點:

  • 為了實現實時更新矩形,需要在while(1)的線程和callback函數中對矩形做動態調整。
  • Not/And/Or的操作分別在“EVENT_LBUTTONUP” “EVENT_LBUTTONDOWN”時有操作的不同。
  • #include

    運行結果:

    四個彈窗:log輸出;&運算、|運算、非運算

    總結

    以上是生活随笔為你收集整理的在VS中怎么用vb画矩形_(十四)矩形和操作展示逻辑操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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