吴忠躺衫网络科技有限公司

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

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

3天內不再提示

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

OpenCV學堂 ? 來源:OpenCV學堂 ? 作者:gloomyfish ? 2022-05-17 11:24 ? 次閱讀

引子

我根據一個矩形進行了各種角度旋轉,就想通過繪制一個帶方向的線段表示它,通過旋轉矩陣很容易的獲取了兩個點坐標,但是很快遇到了一個新問題,怎么繪制那個箭頭,就是帶箭頭的線段,OpenCV中的cv.line函數只支持繪制不帶箭頭的線段,于是我決定重復造輪子。

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

因為我知道opencv有個函數是line無法支持繪制帶箭頭的直線,于是網上一通猛搜,發現一個哥們博客寫OpenCV3如何繪制帶箭頭的線段,C++的代碼!然后我就直接一鍵copy了,一通猛改之后,Python版本就出現了,代碼如下:
importmath

importcv2ascv
importnumpyasnp

image=cv.imread("D:/images/1024_mask.png")
length=10
angle=45
l1=length*np.cos(angle*np.pi/180)
l2=length*np.sin(angle*np.pi/180)
p1=(100,150)
p2=(400,400)
p3=(0.,0.)
pt4=(0.,0.)

#i,j代表p2、p3、p4相對于p0的正負
ifp2[0]>p1[0]:
i=1
else:
i=-1

ifp2[1]>p1[1]:
j=1
else:
j=-1

#直線p1p2相對于x軸的角度,取正值
a1=abs(math.atan((p2[1]-p1[1])/(p2[0]-p1[0])))

#用于計算p2相對于p0的寬高
w1=l1*math.cos(a1)
h1=l1*math.sin(a1)
p0=(p2[0]-w1*i,p2[1]-h1*j);

#直線p3p4相對于x軸的角度
a2=90*np.pi/180-a1;
w2=l2*np.cos(a2)

#用于計算p3和p4相對于p0的寬高
h2=l2*np.sin(a2)
p3=(int(p0[0]-w2*i),int(p0[1]+h2*j))
p4=(int(p0[0]+w2*i),int(p0[1]-h2*j))
cv.line(image,p1,p2,(0,255,0),2,8,0)

#畫箭頭
cv.line(image,p2,p3,(0,255,0),2,8,0)
cv.line(image,p2,p4,(0,255,0),2,8,0)
cv.imshow("arrow-linedemo",image)
cv.waitKey(0)
cv.destroyAllWindows()
改完運行一下,發現可以啦:

其實沒那么復雜

后來我又搜索了一波,發現其實OpenCV還有另外一個函數可以直接繪制帶箭頭的線段的,就是說我在重復造輪子!OpenCV中的函數是:
voidcv::arrowedLine(
InputOutputArrayimg,#輸入圖像
Pointpt1,#線段端點
Pointpt2,
constScalar&color,#顏色
intthickness=1,#線寬
intline_type=8,#渲染類型
intshift=0,
doubletipLength=0.1
)
注意 :最后一個參數,它決定箭頭的大小,默認是線段長度的十分之一!然后用它,一行代碼就可以啦!
importcv2ascv

image=cv.imread("D:/images/1024_mask.png")
cv.arrowedLine(image,(100,150),(400,400),(0,255,0),2,8,0,0.05)
cv.imshow("arrow-linedemo",image)
cv.waitKey(0)
cv.destroyAllWindows()
我又相信OpenCV了!

原文標題:冷知識 | OpenCV繪制帶箭頭方向的線段

文章出處:【微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

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

    關注

    3

    文章

    4346

    瀏覽量

    62971
  • OpenCV
    +關注

    關注

    31

    文章

    635

    瀏覽量

    41556
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    85037

原文標題:冷知識 | OpenCV繪制帶箭頭方向的線段

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    《DNK210使用指南 -CanMV版 V1.0》第三十三章 image元素繪制實驗

    = image.Image(size=(320, 240))img.clear()image模塊為Image對象提供了draw_line()方法,用于在圖像上繪制一條線段,draw_line()方法
    發表于 11-04 14:22

    AD10中手動繪制PCB封裝

    AD10中手動繪制PCB封裝,放置焊盤時,為要選擇Top Layer層上?
    發表于 08-07 17:56

    怎樣繪制流程圖

    此操作。在輸入內容的同時,右面的工具欄可以對文本樣式,背景顏色,以及排列方式進行設置,使用很方便。 5.繪制完成的流程圖需要對添加的圖形以及線段文本內容進行檢查,在面板中的編輯選項中選擇節點可以完后
    發表于 01-15 11:38

    canvas橡皮筋式線段繪制方法

    canvas橡皮筋式線段繪制
    發表于 09-04 08:54

    CAD手機看圖軟件中的多線段功能如何使用?

    在CAD手機看圖軟件浩辰CAD看圖王手機版中的多線段功能可以繪制連續的直線,還可以繪制線段圓弧,同時還提供了對多線段的編輯功能。利用這些基
    發表于 11-19 14:19

    CAD中怎么旋轉箭頭符號?

    。關于使用正版CAD軟件——浩辰CAD電氣軟件旋轉dwg格式圖紙文件中箭頭符號的相關操作技巧就給大家介紹到這里了,各位小伙伴在繪制dwg格式圖紙文件的過程中如果需要旋轉箭頭符號可以參考本篇CAD教程來操作,更多相關CAD教程請持
    發表于 04-02 17:12

    CAD中如何繪制帶有箭頭的引出標注?

    技巧。CAD中箭頭引注的使用技巧:浩辰CAD給排水軟件中箭頭引注命令主要用于繪制帶有箭頭的引出標注,文字可從線端標注也可從線上標注,引線可以多次轉折,用于樓梯方向線、坡度等標注,提供共
    發表于 05-14 17:04

    CAD怎么連接線段?CAD線段連接教程

    在CAD繪圖過程中,如果想要連接兩條線段的話該如何操作呢?其實很簡答,接下來的CAD教程就和小編一起來了解一下浩辰CAD建筑軟件中CAD線段連接的相關操作技巧吧!CAD連接線段的操作步驟:浩辰CAD
    發表于 06-06 20:33

    以動畫形式繪制交流電壓u(t)=Umcos(wt)的波形和對應的時間相量與瞬時值關系圖 精選資料分享

    ,ArrowSize,C,W,theta)%從Start到End繪制一條箭頭的直線if nargin==7 theta=0;elseif nargin==6 theta=0; W=1;elseif nargin==5 thet
    發表于 07-09 07:39

    【Altium小課專題 第110篇】什么是輔助線,在原理圖中怎么放置輔助線?

    ”進行放置。2)在一個合適的位置單擊鼠標“左鍵”,找到下一個位置單擊鼠標“左鍵”確認結束點,,繪制過程中按空格鍵改變繪制形狀。3)在放置的狀態下按Table鍵,在屬性框中將結束線段的形狀改為“
    發表于 07-15 09:50

    基于面繪制與體繪制的CT可視化實現方法

    醫學圖像三維可視化方法分為面繪制和體繪制。討論了兩種繪制方法的思想和優缺點,介紹了兩種算法的機理和實現過程。采用Visualization Toolkit進行醫學數據可視化,分析
    發表于 02-21 14:48 ?37次下載

    基于幾何約束的視頻幀間線段特征匹配算法

    針對線段因遮擋、斷裂以及端點提取不準確等原因造成的線段特征匹配困難問題,特別是現有匹配算法在匹配過程中出現多配多時直接采取最相似匹配而導致丟失大量真實匹配的問題,提出了一種基于多重幾何約束及0-1
    發表于 11-29 10:20 ?0次下載
    基于幾何約束的視頻幀間<b class='flag-5'>線段</b>特征匹配算法

    基于線段樹的內存管理方法

    現有的內存管理的工作多集中在內存分配的效率上,實時性較好,但易產生內存碎片。為此,提出基于線段樹的高效內存管理方法。該方法將內存地址空間劃分為內存段,建立內存管理線段樹,基于所建立的內存管理線段
    發表于 12-27 14:06 ?2次下載
    基于<b class='flag-5'>線段</b>樹的內存管理方法

    怎樣用CDR制作箭頭流程圖

    箭頭流程圖主要由矢量圖和連接符組成,通過圖形之間的順序闡述的一個過程,應用也是非常廣泛,有些軟件中會自帶流程圖,對于CDR這款矢量繪圖軟件來說,手動制作流程圖是簡單且高效的。首先CorelDRAW
    的頭像 發表于 10-11 15:50 ?7662次閱讀

    mos管的箭頭表示什么?mos管電流方向與箭頭

    mos管的箭頭表示什么?mos管電流方向與箭頭 MOS管(Metal Oxide Semiconductor Field Effect Transistor)是一種常用的半導體器件,它是在MOS結構
    的頭像 發表于 09-07 16:08 ?6854次閱讀
    百家乐官网2万| 百家乐官网技巧看路| bet365地址| 定制百家乐桌子| 百家乐十赌九诈| 百家乐有哪几种| 大上海百家乐官网的玩法技巧和规则| 百家乐官网高手和勒威| 明珠百家乐的玩法技巧和规则| 百家乐翻天粤语版qvod| 泰山百家乐官网的玩法技巧和规则| 百家乐官网与龙虎斗怎么玩| 大亨百家乐官网游戏| 澳门新葡京赌场| 顶级赌场手机版官方下载| 百家乐筹码托盘| 百家乐超级市场| 百家乐21点游戏| 百家乐娱乐城怎么样| 豪杰百家乐游戏| 狮威百家乐官网赌场娱乐网规则| 爱赢百家乐官网现金网| 开心8娱乐城| 足球投注| 沈阳棋牌网| 大发888亚洲游戏 网页| 威尼斯人娱乐城线上博彩| 试玩百家乐的玩法技巧和规则| 百家乐21点桌| 半圆百家乐桌子| 百家乐赢家公式| 百家乐技术方式| 百家乐官网平注法到6568| 赌场百家乐官网的玩法技巧和规则 | 皇冠网店| 皇冠网上69691| 皮山县| 遵义县| 峡江县| 当涂县| 百家乐官网破解视频|