在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

OpenCV(C++)創建圖片繪制圖形(矩形、圓、文字、線段等等)

DS小龍哥-嵌入式技術 ? 來源: DS小龍哥-嵌入式技術 ? 作者: DS小龍哥-嵌入式技 ? 2023-06-07 09:19 ? 次閱讀

一、OpenCV介紹

OpenCV 是基于開源許可證的跨平臺計算機視覺庫,提供了一組豐富、廣泛的圖像處理和計算機視覺算法。OpenCV 支持多種編程語言,包括 C++PythonJava 等,可以運行在 Linux、Windows、Mac OS 等平臺上。

OpenCV 能夠在圖像上繪制各種幾何形狀、文本和曲線,以及對圖像進行調整、裁剪和旋轉等操作,這些功能都為圖像的分析和處理提供了很大的幫助。

以下是 OpenCV 可以繪制圖像的一些應用:

(1)圖像標注:在圖像上添加標注或者注釋,例如在目標檢測或者圖像分類任務中,通過在圖像上繪制框、標簽信息來標記檢測到的目標。

(2)處理后顯示:例如在圖像處理過程中,可以在處理前和處理后的圖像上繪制對比圖,直觀地顯示圖像處理的效果。

(3)實時顯示:通過持續不斷地在屏幕上繪畫來實現實時顯示效果,例如在視頻處理中輸出處理后的視頻流并將其實時渲染在屏幕上。

二、繪制圖形

【1】繪制圖形彈窗顯示

下面代碼實現的功能:

使用 OpenCV(C++) 新建一張透明圖片,在圖片里繪制一個矩形、一條直線、一段文字、一個圓。

// 創建一張大小為 512x512,具有 alpha 通道的透明圖片
 cv::Mat img(512, 512, CV_8UC4, cv::Scalar(0, 0, 0, 0));
 ?
 // 在圖片上繪制一個矩形
 cv::rectangle(img, cv::Point(50, 50), cv::Point(200, 150), cv::Scalar(255, 0, 0, 255), -1);
 ?
 // 在圖片上繪制一條直線
 cv::line(img, cv::Point(300, 100), cv::Point(450, 100), cv::Scalar(0, 255, 0, 255), 3);
 ?
 // 在圖片上繪制一段文本
 std::string text = "Hello, OpenCV!";
 cv::putText(img, text, cv::Point(50, 300), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 0, 255, 255), 2);
 ?
 // 在圖片上繪制一個圓
 cv::circle(img, cv::Point(400, 350), 50, cv::Scalar(255, 255, 0, 255), -1);
 ?
 // 顯示圖片
 cv::imshow("image", img);
 cv::waitKey(0);

cv::Mat 是 OpenCV 中表示圖像的數據結構,它可以存儲多通道的圖像。

cv::Scalar 是一個四通道的實數向量,用于表示像素點的顏色和 alpha 值。

cv::Point 是一個二維整型向量,用于表示像素點的坐標。

cv::rectangle 函數用于在圖片上繪制矩形。

cv::line 函數用于在圖片上繪制直線。

cv::putText 函數用于在圖片上繪制文本。

cv::circle 函數用于在圖片上繪制圓。

【2】繪制圖形保存到本地

// 創建一張大小為 512x512,具有 alpha 通道的透明圖片
 cv::Mat img(512, 512, CV_8UC4, cv::Scalar(0, 0, 0, 0));
 ?
 // 在圖片上繪制一個矩形
 cv::rectangle(img, cv::Point(50, 50), cv::Point(200, 150), cv::Scalar(255, 0, 0, 255), -1);
 ?
 // 在圖片上繪制一條直線
 cv::line(img, cv::Point(300, 100), cv::Point(450, 100), cv::Scalar(0, 255, 0, 255), 3);
 ?
 // 在圖片上繪制一段文本
 std::string text = "Hello, OpenCV!";
 cv::putText(img, text, cv::Point(50, 300), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 0, 255, 255), 2);
 ?
 // 在圖片上繪制一個圓
 cv::circle(img, cv::Point(400, 350), 50, cv::Scalar(255, 255, 0, 255), -1);
 ?
 // 保存圖片到本地
 cv::imwrite("output.png", img);

三、函數功能介紹

【1】繪制直線

cv::line 函數用于在圖像上繪制一條直線,其參數如下:

void cv::line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color,
               int thickness = 1, LineTypes lineType = LINE_8, int shift = 0);
  • img: 輸入輸出參數,表示待繪制的目標圖像。

  • pt1: 輸入參數,表示的是直線的起點坐標,是一個 cv::Point 類型的對象。

  • pt2: 輸入參數,表示的是直線的終點坐標,也是一個 cv::Point 類型的對象。

  • color: 輸入參數,表示繪制直線的顏色以及透明度,是一個 cv::Scalar 類型的對象。常見的顏色有:紅色(0, 0, 255)、綠色(0, 255, 0)、藍色(255, 0, 0)等。

  • thickness: 可選參數,表示繪制直線的寬度。默認值為 1 表示繪制一個像素寬度的直線,如果設置為負值,則表示繪制一條填充直線。

  • lineType
    

    : 可選參數,表示直線的類型,可以取以下幾個值:

    • cv::LINE_4: 表示繪制一條 4 連通的直線,默認值。
    • cv::LINE_8: 表示繪制一條 8 連通的直線。
    • cv::LINE_AA: 表示繪制一條抗鋸齒的直線。
  • shift: 可選參數,表示坐標點像素值所占用的位數,默認為 0。

【2】繪制圓

cv::circle 函數用于在圖像上繪制一個圓,其參數如下:

void cv::circle(InputOutputArray img, Point center, int radius, const Scalar& color,
                 int thickness = 1, LineTypes lineType = LINE_8, int shift = 0);
  • img: 輸入輸出參數,表示待繪制的目標圖像。

  • center: 輸入參數,表示圓心坐標,是一個 cv::Point 類型的對象。

  • radius: 輸入參數,表示圓的半徑。

  • color: 輸入參數,表示繪制圓的顏色以及透明度,是一個 cv::Scalar 類型的對象。

  • thickness: 可選參數,表示圓線條的寬度。默認值為 1 表示繪制一個像素寬度的圓,如果設置為負值,則表示繪制一條填充的圓。

  • lineType
    

    : 可選參數,表示圓邊界的類型,可以取以下幾個值:

    • cv::LINE_4: 表示繪制四個相鄰的點的圓邊界,默認值。
    • cv::LINE_8: 表示繪制八個相鄰的點的圓邊界。
    • cv::LINE_AA: 表示繪制抗鋸齒的圓邊界。
  • shift: 可選參數,表示坐標點像素值所占用的位數,默認值為 0。

【3】繪制矩形

cv::rectangle 函數用于在圖像上繪制一個矩形,其參數如下:

void cv::rectangle(InputOutputArray img, Rect rect, const Scalar& color,
                    int thickness = 1, LineTypes lineType = LINE_8, int shift = 0);
  • img: 輸入輸出參數,表示待繪制的目標圖像。

  • rect: 輸入參數,表示矩形,是一個 cv::Rect 類型的對象,可以通過傳遞左上角和右下角坐標的方式來定義一個矩形。

  • color: 輸入參數,表示繪制矩形的顏色以及透明度,是一個 cv::Scalar 類型的對象。

  • thickness: 可選參數,表示矩形邊框的寬度。默認值為 1 表示繪制一個像素寬度的矩形,如果設置為負值,則表示繪制一條填充的矩形。

  • lineType
    

    : 可選參數,表示矩形邊框的類型,可以取以下幾個值:

    • cv::LINE_4: 表示繪制四個相鄰的點的矩形邊框,默認值。
    • cv::LINE_8: 表示繪制八個相鄰的點的矩形邊框。
    • cv::LINE_AA: 表示繪制抗鋸齒的矩形邊框。
  • shift: 可選參數,表示坐標點像素值所占用的位數,默認值為 0。

【4】繪制文本

cv::putText 函數用于在圖像上繪制文本,其參數如下:

void cv::putText(InputOutputArray img, const String& text, Point org, int fontFace,
                 double fontScale, Scalar color, int thickness = 1, int lineType = LINE_8,
                 bool bottomLeftOrigin = false);
  • img: 輸入輸出參數,表示待繪制的目標圖像。

  • text: 輸入參數,表示要繪制的文本字符串。

  • org: 輸入參數,表示文本框左下角的坐標點,是一個 cv::Point 類型的對象。

  • fontFace
    

    : 輸入參數,表示字體類型,可以取以下幾個值:

    • cv::FONT_HERSHEY_COMPLEX: 復雜風格字體。
    • cv::FONT_HERSHEY_COMPLEX_SMALL: 小字號復雜風格字體。
    • cv::FONT_HERSHEY_DUPLEX: 雙線條字體。
    • cv::FONT_HERSHEY_PLAIN: 單線條字體。
    • cv::FONT_HERSHEY_SIMPLEX: 正常大小的字體。
    • cv::FONT_HERSHEY_TRIPLEX: 三線條字體。
  • fontScale: 輸入參數,表示字體大小縮放比例。

  • color: 輸入參數,表示繪制文本的顏色以及透明度,是一個 cv::Scalar 類型的對象。

  • thickness: 可選參數,表示文本輪廓線條的寬度。默認值為 1 表示繪制一個像素寬度的文本,如果設置為負值,則表示繪制一條填充的文本。

  • lineType
    

    : 可選參數,表示文本邊界的類型,可以取以下幾個值:

    • cv::LINE_4: 表示繪制四個相鄰的點的文本邊界,默認值。
    • cv::LINE_8: 表示繪制八個相鄰的點的文本邊界。
    • cv::LINE_AA: 表示繪制抗鋸齒的文本邊界。
  • bottomLeftOrigin: 可選參數,表示坐標點是否為文本框左下角的坐標點,默認值為 false,表示坐標點為文本框左上角的坐標點。

審核編輯 黃宇

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

    關注

    87

    文章

    11322

    瀏覽量

    209857
  • JAVA
    +關注

    關注

    19

    文章

    2972

    瀏覽量

    104862
  • C++
    C++
    +關注

    關注

    22

    文章

    2112

    瀏覽量

    73707
  • OpenCV
    +關注

    關注

    31

    文章

    635

    瀏覽量

    41387
  • python
    +關注

    關注

    56

    文章

    4799

    瀏覽量

    84820
收藏 人收藏

    評論

    相關推薦

    推薦幾個去掉圖片上的文字的技巧!!

     推薦幾個去掉圖片上的文字的技巧!!1、使用仿制圖章工具去除文字。 這是比較常用的方法。具體的操作是,選取仿制圖章工具,按住 Al
    發表于 06-02 18:08

    VC繪制圖形的示例(含源代碼)

    VC繪制圖形的示例(含源代碼) [hide][/hide]
    發表于 05-10 10:13

    【安富萊】【STemWin教程】第10章 2-D圖形庫之繪制圖形

    `第10章 2-D圖形庫之繪制圖形 本期主要講解2-D圖形庫的圖形繪制,包括繪制多邊形,
    發表于 03-25 11:21

    第10章 2-D圖形庫之繪制圖形

    轉stemwin教程本期主要講解2-D圖形庫的圖形繪制,包括繪制多邊形,繪制
    發表于 10-12 10:13

    國產CAD制圖軟件中閉合命令的使用技巧

    在使用浩辰CAD制圖軟件繪制圖紙的過程中,如果存在不閉合的圖形,有些操作就會無法進行,比如在填充時候則需要填充區域是封閉的。那么怎么才能將圖形閉合呢?接下來和小編一起來看看國產CAD浩
    發表于 08-11 15:10

    機械CAD制圖軟件入門教程:繪制倒角/

    在使用浩辰機械CAD制圖軟件繪制圖紙的過程中,如何才能快速的對一些倒角/倒進行處理呢?下面就和小編一起來看看浩辰機械CAD制圖軟件中快速繪制
    發表于 10-13 14:51

    C語言繪制圖像梯度圖原理介紹

    *2401、采集原始圖像配置ESP32輸出灰度圖,像素太高無法存儲及處理。320*240= 75K。2、圖像梯度計算參考代碼:C語言繪制圖像梯度圖 原理介紹:圖像的梯度 h...
    發表于 01-11 06:36

    如何將單片機攝像頭讀取回傳的RGB數組繪制圖片

    咚咚咚的關于使用Matlab————將單片機攝像頭讀取回傳的RGB數組繪制圖片(一)效果展示(二)源碼分享(三)需要改進的地方及不足(一)效果展示(二)源碼分享(Excel部分函數)=HEX2BIN
    發表于 01-20 07:13

    如何使用emWin的API繪制圖形

    應用程序: 此示例代碼使用 emWin 的 API 繪制圖形, 可以用作按鈕, 更改面板上文字編輯的值 。 BSP 版本:M480系列BSP CMSIS V3.03.001 硬件
    發表于 08-23 07:37

    M480使用emWin的API繪制圖形

    應用程序: 此示例代碼使用 emWin 的 API 繪制圖形, 可以用作按鈕, 更改面板上文字編輯的值 。 BSP 版本:M480系列BSP CMSIS V3.03.001 硬件
    發表于 08-30 08:58

    C#教程之圖片繪制文字

    C#教程之圖片繪制文字,很好的C#資料,快來學習吧。
    發表于 04-20 11:13 ?5次下載

    查找和繪制圖片輪廓矩

    OpenCV3編程入門》書本配套源代碼:查找和繪制圖片輪廓矩
    發表于 06-06 15:20 ?3次下載

    OpenCV3編程入門-源碼例程全集-查找和繪制圖片輪廓矩

    OpenCV3編程入門-源碼例程全集-查找和繪制圖片輪廓矩
    發表于 09-17 22:54 ?2次下載

    手動版實現帶箭頭的線段繪制

    我根據一個矩形進行了各種角度旋轉,就想通過繪制一個帶方向的線段表示它,通過旋轉矩陣很容易的獲取了兩個點坐標,但是很快遇到了一個新問題,怎么繪制那個箭頭,就是帶箭頭的
    的頭像 發表于 05-17 11:24 ?1739次閱讀

    鴻蒙開發接口圖形圖像:【WebGL】

    WebGL提供圖形繪制的能力,包括對當前繪制圖形的位置、顏色等進行處理。
    的頭像 發表于 05-30 09:31 ?537次閱讀
    鴻蒙開發接口<b class='flag-5'>圖形</b>圖像:【WebGL】
    主站蜘蛛池模板: 久久婷婷丁香| 日韩免费网站| 国产超爽人人爽人人做| 久久精品国产精品亚洲精品| 男女做性无遮挡免费视频| 轻点太大了好深好爽h文| 高清一区二区在线观看| 一二三四日本视频社区| 一级一片免费播放| 四虎在线永久| 美女黄18| 99精品免费视频| 天堂在线网站| 岛国午夜精品视频在线观看| 免费在线公开视频| 九九热免费在线观看| 亚洲人成www在线播放| 日韩美女三级| 国产人成精品香港三级古代| 五月婷综合网| aaa在线观看| 欧美经典三级春潮烂漫海棠红| 亚洲第一区二区快射影院| 日本免费黄色| 高清色| 色v在线| 4438x成人网全国最大| 伊人伊成久久人综合网777| 日本a级影院| 18一20岁一级毛片| 67xxxxxx日本| 福利一区二区在线观看| 色播图片| 亚洲精品自拍区在线观看| 色欧美色| 国产精品怡红院永久免费| 偷偷鲁影院手机在线观看| 操她射她| 成人啪啪免费视频| 一级特黄aa大片免费播放视频| 日本天堂网在线观看|