国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《數(shù)字圖像處理-OpenCV/Python》連載(22)繪制直線與線段

這篇具有很好參考價(jià)值的文章主要介紹了《數(shù)字圖像處理-OpenCV/Python》連載(22)繪制直線與線段。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

《數(shù)字圖像處理-OpenCV/Python》連載(22)繪制直線與線段


本書京東優(yōu)惠購(gòu)書鏈接:https://item.jd.com/14098452.html
本書CSDN獨(dú)家連載專欄:https://blog.csdn.net/youcans/category_12418787.html

opencv 在圖片上畫45度角的直線,《數(shù)字圖像處理-OpenCV》連載,opencv,python,圖像處理,計(jì)算機(jī)視覺,人工智能


第 4 章 繪圖與鼠標(biāo)交互


本章介紹OpenCV的繪圖功能和簡(jiǎn)單的鼠標(biāo)交互處理方法。與Excel或Matplotlib中的可視化數(shù)據(jù)圖不同,OpenCV中的繪圖功能主要用于在圖像的指定位置繪制幾何圖形。


本章內(nèi)容概要

  • 學(xué)習(xí)OpenCV繪圖的基本方法和參數(shù)。
  • 通過學(xué)習(xí)OpenCV繪圖函數(shù),能在圖像上繪制直線、矩形、圓形和多邊形等,以及在圖像上添加文字和符號(hào)。
  • 介紹鼠標(biāo)交互操作方法,通過鼠標(biāo)、鍵盤與顯示圖像的實(shí)時(shí)交互獲取數(shù)據(jù)。

4.2 繪制直線與線段

函數(shù)cv.line用于在圖像上繪制直線,函數(shù)cv.arrowedLine用于繪制帶箭頭的直線。

函數(shù)原型

cv.line(img, pt1, pt2, color[, thickness=1, lineType=LINE_8, shift=0]) → img
cv.arrowedLine(img, pt1, pt2, color[, thickness=1, line_type=8, shift=0, tipLength=0.1]) → img

函數(shù)cv.line用于繪制圖像中點(diǎn)pt1與點(diǎn)pt2之間的直線線段,函數(shù)cv.arrowedLine用于繪制圖像中從點(diǎn)pt1指向點(diǎn)pt2的帶箭頭線段。

參數(shù)說明

  • img:輸入/輸出圖像,允許為單通道灰度圖像或多通道彩色圖像。
  • pt1:線段第一個(gè)點(diǎn)的坐標(biāo),格式為元組(x1, y1)。
  • pt2:線段第二個(gè)點(diǎn)的坐標(biāo),格式為元組(x2, y2)。
  • tipLength:箭頭部分長(zhǎng)度與線段長(zhǎng)度的比例,默認(rèn)為0.1。

注意問題
(1) 繪圖操作能直接對(duì)輸入圖像進(jìn)行修改,繪制的線段能疊加到輸入圖像上。函數(shù)語(yǔ)法無須接受函數(shù)的返回值。
(2) 繪制起點(diǎn)pt1和終點(diǎn)pt2之間的線段,注意坐標(biāo)格式為(x, y),而不是(y, x)。
(3) 如果起點(diǎn)或終點(diǎn)坐標(biāo)超出了圖像邊界,則要以圖像邊界對(duì)繪制的線段進(jìn)行裁剪。此時(shí),線段的端點(diǎn)為線段與圖像邊界的交點(diǎn),不顯示越界的線段或箭頭。
(4) 箭頭從起點(diǎn)pt1指向終點(diǎn)pt2,通過交換起點(diǎn)與終點(diǎn)并重復(fù)繪制,可以繪制帶雙向箭頭的線段。
(5) 箭頭與直線的夾角是45度,tipLength表示箭頭部分長(zhǎng)度與線段長(zhǎng)度的比例。


【例程0401】繪制直線與線段

本例程用于在圖像上繪制直線與線段,注意對(duì)照程序注釋與顯示結(jié)果比較參數(shù)的影響。


# 【0401】繪制直線與線段
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

if __name__ == '__main__':
    height, width, channels = 180, 200, 3
    img = np.ones((height, width, channels), np.uint8) * 160  # 創(chuàng)建灰色圖像

    # (1) 線條參數(shù) color 的設(shè)置
    # 注意 pt1、pt2 坐標(biāo)格式是 (x,y),而不是 (y,x)
    img1 = img.copy()  # 繪圖函數(shù)就地操作,修改輸入圖像
    cv.line(img1, (0,0), (200,180), (0,0,255), 1)  # 紅色 R=255
    cv.line(img1, (0,0), (100,180), (0,255,0), 1)  # 綠色 G=255
    cv.line(img1, (0,40), (200,40), (128,0,0), 2)  # 深藍(lán) B=128
    cv.line(img1, (0,80), (200,80), 128, 2)  # color=128 等效于 (128,0,0)
    cv.line(img1, (0,120), (200,120), 255, 2)  # color=255 等效于 (255,0,0)

    # (2) 線寬的設(shè)置
    # 如果設(shè)置了 thickness,則關(guān)鍵詞 "lineType" 可以省略
    img2 = img.copy()
    cv.line(img2, (20,50), (180,10), (255,0,0), 1, cv.LINE_8)  # 綠色
    cv.line(img2, (20,90), (180,50), (255,0,0), 1, cv.LINE_AA)  # 綠色
    # 如果沒有設(shè)置 thickness,則關(guān)鍵詞 "lineType" 不能省略
    cv.line(img2, (20,130), (180,90), (255,0,0), cv.LINE_8)  # 藍(lán)色,函數(shù)cv.line 被識(shí)別為線寬
    cv.line(img2, (20,170), (180,130), (255,0,0), cv.LINE_AA)  # 藍(lán)色,函數(shù)cv.line 被識(shí)別為線寬

    # (3) tipLength 指箭頭部分長(zhǎng)度與整個(gè)線段長(zhǎng)度的比例
    img3 = img.copy()
    img3 = cv.arrowedLine(img3, (20,20), (180,20), (0,0,255), tipLength=0.05)  # 從 pt1 指向 pt2
    img3 = cv.arrowedLine(img3, (20,60), (180,60), (0,0,255), tipLength=0.1)
    img3 = cv.arrowedLine(img3, (20,100), (180,100), (0,0,255), tipLength=0.15)  # 雙向箭頭
    img3 = cv.arrowedLine(img3, (180,100), (20,100), (0,0,255), tipLength=0.15)  # 交換 pt1、pt2
    img3 = cv.arrowedLine(img3, (20,140), (210,140), (0,0,255), tipLength=0.2)  # 終點(diǎn)越界,箭頭未顯示

    # (4) 沒有復(fù)制原圖像,直接改變輸入圖像的 img,可能導(dǎo)致它們相互影響
    img4 = cv.line(img, (0,100), (150,100), (0,255,0), 1)  # 水平線,y=100
    img5 = cv.line(img, (75,0), (75,200), (0,0,255), 1)  # 垂直線,x=75

    # (5) 灰度圖像上只能繪制灰度線條,參數(shù) color 只有第一通道值有效
    img6 = np.zeros((height, width), np.uint8)  # 創(chuàng)建灰度圖像
    cv.line(img6, (0,10), (200,10), (0,255,255), 2)  # Gray=0
    cv.line(img6, (0,30), (200,30), (64,128,255), 2)  # Gray=64
    cv.line(img6, (0,60), (200,60), (128,64,255), 2)  # Gray=128
    cv.line(img6, (0,100), (200,100), (255,0,255), 2)  # Gray=255
    cv.line(img6, (20,0), (20,200), 128, 2)  # Gray=128
    cv.line(img6, (60,0), (60,200), (255,0,0), 2)  # Gray=255
    cv.line(img6, (100,0), (100,200), (255,255,255), 2)  # Gray=255
    print(img6.shape, img6.shape)

    plt.figure(figsize=(9, 6))
    plt.subplot(231), plt.title("1. img1"), plt.axis('off')
    plt.imshow(cv.cvtColor(img1, cv.COLOR_BGR2RGB))
    plt.subplot(232), plt.title("2. img2"), plt.axis('off')
    plt.imshow(cv.cvtColor(img2, cv.COLOR_BGR2RGB))
    plt.subplot(233), plt.title("3. img3"), plt.axis('off')
    plt.imshow(cv.cvtColor(img3, cv.COLOR_BGR2RGB))
    plt.subplot(234), plt.title("4. img4"), plt.axis('off')
    plt.imshow(cv.cvtColor(img4, cv.COLOR_BGR2RGB))
    plt.subplot(235), plt.title("5. img5"), plt.axis('off')
    plt.imshow(cv.cvtColor(img5, cv.COLOR_BGR2RGB))
    plt.subplot(236), plt.title("6. img6"), plt.axis('off')
    plt.imshow(img6, cmap="gray")
    plt.tight_layout()
    plt.show()

程序說明:
(1) 運(yùn)行結(jié)果,繪制直線與線段如圖4-1所示,注意要對(duì)照程序注釋與顯示的圖像比較不同參數(shù)的影響。
(2) 在沒有設(shè)置 thickness時(shí)關(guān)鍵詞lineType不能省略,否則函數(shù)cv.line 將被識(shí)別為線寬(見圖4-1(2))。
(3) 由于繪圖函數(shù)就地操作,修改了輸入圖像,導(dǎo)致圖4-1(4)和圖4-1(5)所示的繪制結(jié)果相互影響。

opencv 在圖片上畫45度角的直線,《數(shù)字圖像處理-OpenCV》連載,opencv,python,圖像處理,計(jì)算機(jī)視覺,人工智能
圖4-1 繪制直線與線段


版權(quán)聲明:
youcans@xupt 原創(chuàng)作品,轉(zhuǎn)載必須標(biāo)注原文鏈接:(https://blog.csdn.net/youcans/article/details/133693135)
Copyright 2023 youcans, XUPT
Crated:2023-10-16

歡迎關(guān)注本書CSDN獨(dú)家連載專欄
《數(shù)字圖像處理-OpenCV/Python》連載: https://blog.csdn.net/youcans/category_12418787.html文章來源地址http://www.zghlxwxcb.cn/news/detail-786366.html

到了這里,關(guān)于《數(shù)字圖像處理-OpenCV/Python》連載(22)繪制直線與線段的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 《數(shù)字圖像處理-OpenCV/Python》連載(1)前言

    《數(shù)字圖像處理-OpenCV/Python》連載(1)前言

    本書京東優(yōu)惠購(gòu)書鏈接:https://item.jd.com/14098452.html 寫作背景 編寫本書的初衷,源自作者學(xué)習(xí)數(shù)字圖像處理的經(jīng)歷。 在創(chuàng)新實(shí)驗(yàn)班開設(shè)的專業(yè)創(chuàng)新教育課程中,我選擇的是數(shù)字圖像處理方向。老師向我推薦的教材是岡薩雷斯的《數(shù)字圖像處理》。學(xué)習(xí)的開始階段非常困難。教

    2024年02月11日
    瀏覽(161)
  • 《數(shù)字圖像處理-OpenCV/Python》連載(44)圖像的投影變換

    《數(shù)字圖像處理-OpenCV/Python》連載(44)圖像的投影變換

    本書京東優(yōu)惠購(gòu)書鏈接:https://item.jd.com/14098452.html 本書CSDN獨(dú)家連載專欄:https://blog.csdn.net/youcans/category_12418787.html 幾何變換分為等距變換、相似變換、仿射變換和投影變換,是指對(duì)圖像的位置、大小、形狀和投影進(jìn)行變換,將圖像從原始平面投影到新的視平面。OpenCV圖像的幾

    2024年02月04日
    瀏覽(125)
  • 《數(shù)字圖像處理-OpenCV/Python》連載(4)圖像的讀取與保存

    《數(shù)字圖像處理-OpenCV/Python》連載(4)圖像的讀取與保存

    本書京東優(yōu)惠購(gòu)書鏈接:https://item.jd.com/14098452.html 本書CSDN獨(dú)家連載專欄:https://blog.csdn.net/youcans/category_12418787.html 為了方便初學(xué)者從零開始學(xué)習(xí)OpenCV-Python,本書從圖像的讀取、保存和顯示等基本操作開始介紹,使讀者可以循序漸進(jìn)地使用和理解本書的每一個(gè)例程。 本章內(nèi)容

    2024年02月09日
    瀏覽(93)
  • 《數(shù)字圖像處理-OpenCV/Python》連載(10)圖像屬性與數(shù)據(jù)類型

    《數(shù)字圖像處理-OpenCV/Python》連載(10)圖像屬性與數(shù)據(jù)類型

    本書京東優(yōu)惠購(gòu)書鏈接:https://item.jd.com/14098452.html 本書CSDN獨(dú)家連載專欄:https://blog.csdn.net/youcans/category_12418787.html 在Python語(yǔ)言中,OpenCV以Numpy數(shù)組存儲(chǔ)圖像,對(duì)圖像的訪問和處理都是通過Numpy數(shù)組的操作來實(shí)現(xiàn)的。 本章內(nèi)容概要 介紹Python語(yǔ)言中OpenCV的數(shù)據(jù)結(jié)構(gòu),學(xué)習(xí)獲取圖像

    2024年02月07日
    瀏覽(221)
  • 《數(shù)字圖像處理-OpenCV/Python》連載:空間濾波之高斯濾波器

    《數(shù)字圖像處理-OpenCV/Python》連載:空間濾波之高斯濾波器

    本書京東 優(yōu)惠購(gòu)書鏈接 https://item.jd.com/14098452.html 本書CSDN 獨(dú)家連載專欄 https://blog.csdn.net/youcans/category_12418787.html 圖像濾波是指在盡可能保留圖像細(xì)節(jié)特征的條件下對(duì)目標(biāo)圖像的噪聲進(jìn)行抑制,是常用的圖像處理方法。 空間濾波也稱空間域?yàn)V波,濾波器規(guī)定了鄰域形狀與鄰域

    2024年02月02日
    瀏覽(99)
  • 【Python_Opencv圖像處理框架】信用卡數(shù)字識(shí)別項(xiàng)目

    【Python_Opencv圖像處理框架】信用卡數(shù)字識(shí)別項(xiàng)目

    本篇文章是opencv學(xué)習(xí)的第六篇文章,前面主要講解了對(duì)圖像的一些基本操作,這篇文章我們就開始大展身手,將前面所學(xué)的基礎(chǔ)操作活學(xué)活用。既能復(fù)習(xí)基礎(chǔ)操作,又能學(xué)到一些新的知識(shí)。作為初學(xué)者,我盡己所能,但仍會(huì)存在疏漏的地方,希望各位看官不吝指正?? 我們通

    2024年02月03日
    瀏覽(90)
  • 數(shù)字圖像處理二維碼識(shí)別python+opencv實(shí)現(xiàn)二維碼實(shí)時(shí)識(shí)別

    數(shù)字圖像處理二維碼識(shí)別python+opencv實(shí)現(xiàn)二維碼實(shí)時(shí)識(shí)別

    數(shù)字圖像處理二維碼識(shí)別 python+opencv實(shí)現(xiàn)二維碼實(shí)時(shí)識(shí)別 特點(diǎn): (1)可以實(shí)現(xiàn)普通二維碼,條形碼; (2)解決了opencv輸出中文亂碼的問題 (3)增加網(wǎng)頁(yè)自動(dòng)跳轉(zhuǎn)功能 (4)實(shí)現(xiàn)二維碼實(shí)時(shí)檢測(cè)和識(shí)別 代碼保證原創(chuàng)、無錯(cuò)誤、能正常運(yùn)行(如果電腦環(huán)境配置沒問題) 送二維

    2024年01月16日
    瀏覽(102)
  • 數(shù)字圖像處理(實(shí)踐篇)二十七 Python-OpenCV 滑動(dòng)條的使用

    數(shù)字圖像處理(實(shí)踐篇)二十七 Python-OpenCV 滑動(dòng)條的使用

    目錄 1 涉及的函數(shù) 2 實(shí)踐 1 涉及的函數(shù) ⒈?setWindowProperty()用于設(shè)置GUI應(yīng)用程序的屬性 參數(shù) : ①?

    2024年01月25日
    瀏覽(97)
  • 數(shù)字圖像處理(實(shí)踐篇)二十九 OpenCV-Python在圖像中檢測(cè)矩形、正方形和三角形的實(shí)踐

    數(shù)字圖像處理(實(shí)踐篇)二十九 OpenCV-Python在圖像中檢測(cè)矩形、正方形和三角形的實(shí)踐

    目錄 1 方案 2 實(shí)踐 1 方案 ①檢測(cè)矩形和正方形 ⒈檢測(cè)圖像中的所有輪廓。 ⒉循環(huán)檢查所有檢測(cè)到的輪廓。 ⒊為每個(gè)輪廓找到近似的輪廓。如果近似輪廓中的頂點(diǎn)數(shù)為4,則計(jì)算 寬高比 用來區(qū)分 矩形 和 正方形 。如果寬高比在0.9到1.1之間,則認(rèn)為為正方形,否則的話,則為

    2024年01月25日
    瀏覽(99)
  • OpenCV數(shù)字圖像處理基于C++:圖像分割

    OpenCV數(shù)字圖像處理基于C++:圖像分割

    圖像閾值化分割是一種常用的、傳統(tǒng)的圖像分割技術(shù),因其 實(shí)現(xiàn)簡(jiǎn)單、計(jì)算量小、性能比較穩(wěn)定 而成為圖像分割中基本和應(yīng)用廣泛的分割技術(shù)。特別 適合于目標(biāo)和背景占據(jù)不同灰度級(jí)范圍的圖像 。不僅 可以極大地壓縮數(shù)據(jù)量 ,而且大大 簡(jiǎn)化了分析和處理的步驟 ,是進(jìn)行

    2024年02月11日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包