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

opencv+圖像處理(GUI)1-0圖像:創(chuàng)建加載顯示保存關(guān)閉

這篇具有很好參考價(jià)值的文章主要介紹了opencv+圖像處理(GUI)1-0圖像:創(chuàng)建加載顯示保存關(guān)閉。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

  • 本專欄代碼地址https://github.com/xiawei20161308104/xv_opencv_tutorials
  • 本節(jié)代碼路徑xv_opencv_tutorials/ImageProcessinginOpenCV/load_img.py

0.本節(jié)知識點(diǎn)

  • 創(chuàng)建窗口namedWindow
  • 從本地加載圖像 imread
  • 在窗口中展示圖像imshow
  • 將圖像寫入文件imwrite
  • 關(guān)閉窗口destroyWindow destroyAllWindows

1.創(chuàng)建窗口

opencv提供cv.namedWindow函數(shù)實(shí)現(xiàn)創(chuàng)建一個(gè)窗口功能

import cv2 as cv
# 參數(shù)一winname:string類型的窗口名稱,參數(shù)二flags:窗口類型,使用規(guī)定好的類型,默認(rèn)WINDOW_AUTOSIZE
cv.namedWindow('img', cv.WINDOW_AUTOSIZE)
cv.waitKey(0)

opencv+圖像處理(GUI)1-0圖像:創(chuàng)建加載顯示保存關(guān)閉
flags窗口類型的可選參數(shù)
一般使用cv.WINDOW_NORMAL就可以啦

函數(shù)名稱 應(yīng)用
cv.WINDOW_NORMAL 可以用鼠標(biāo)調(diào)整窗口大小,將全屏窗口切換正常大小
cv.WINDOW_AUTOSIZE 不能改變大小,圖像顯示為其原始大小,但也受到屏幕分辨率的影響
cv.WINDOW_FULLSCREEN 全屏顯示
cv.WINDOW_FREERATIO 調(diào)整圖片大小的時(shí)候,不考慮原始比率
cv.WINDOW_KEEPRATIO 調(diào)整圖片大小的時(shí)候,保持原始比率不變
cv.WINDOW_OPENGL 支持opengl

注意

  1. 若填入的winname重復(fù),則函數(shù)不執(zhí)行,例如:
    此時(shí)的img圖像是第一個(gè)創(chuàng)建的img,第三個(gè)不執(zhí)行。
    opencv+圖像處理(GUI)1-0圖像:創(chuàng)建加載顯示保存關(guān)閉
  2. WINDOW_AUTOSIZE可能會出現(xiàn)適配不好的情況。左圖img只顯示了上半截,顯示不完全,右圖為原圖。opencv+圖像處理(GUI)1-0圖像:創(chuàng)建加載顯示保存關(guān)閉

2.從本地加載圖像

opencv提供cv.imread函數(shù)實(shí)現(xiàn)讀取圖像功能??梢宰x取的類型有:
opencv+圖像處理(GUI)1-0圖像:創(chuàng)建加載顯示保存關(guān)閉

import cv2 as cv
cv.namedWindow('img WINDOW_NORMAL', cv.WINDOW_NORMAL)
# 讀取圖像
# 參數(shù)一filename:string類型的圖片路徑,參數(shù)二flags:讀取方式,比如讀取哪個(gè)通道,哪些保留哪些丟棄等。使用規(guī)定好的類型。
img = cv.imread("../imgs/opencv.png")
cv.imshow('img WINDOW_NORMAL', img)
cv.waitKey(0)

flags讀取方式的可選參數(shù)

補(bǔ)充:
jpg: 格式是有損壓縮 ,24 bit真彩色,不支持動畫、不支持透明色。在壓縮過程中圖像的品質(zhì)會遭受破壞。一張圖片多次上傳下載后,圖片逐漸會失真。
PNG:格式是無損數(shù)據(jù)壓縮,PNG格式有8位、24位、32位三種形式,其中8位PNG支持兩種不同的透明形式(索引透明和alpha透明),24位PNG不支持透明,32位PNG在24位基礎(chǔ)上增加了8位透明通道(32-24=8)可展現(xiàn)256級透明程度。
imread函數(shù)默認(rèn)不讀取透明度,所以若有一些的特殊格式的圖像需要進(jìn)行flag標(biāo)記。

函數(shù)名稱 應(yīng)用
cv.IMREAD_UNCHANGED 讀取原始圖像不改變,可以讀取到png的透明通道
cv.IMREAD_GRAYSCALE 用編碼器內(nèi)部轉(zhuǎn)換為灰度圖
cv.IMREAD_COLOR 默認(rèn)配置,轉(zhuǎn)為3通道BGR圖像
cv.IMREAD_REDUCED_GRAYSCALE_2/ 轉(zhuǎn)為灰度圖,尺寸減小1/2
cv.IMREAD_REDUCED_GRAYSCALE_4/ 轉(zhuǎn)為灰度圖,尺寸減小1/4
cv.IMREAD_REDUCED_GRAYSCALE_8 轉(zhuǎn)為灰度圖,尺寸減小1/8
cv.IMREAD_REDUCED_COLOR_2 轉(zhuǎn)為BGR彩圖,尺寸減少1/2(還可以減小1/4,1/8)

demo

import cv2 as cv
cv.namedWindow('img IMREAD_GRAYSCALE', cv.WINDOW_NORMAL)
cv.namedWindow('img1 original', cv.WINDOW_NORMAL)
cv.namedWindow('img2 original had alpha', cv.WINDOW_NORMAL)

# 讀取圖像
# 參數(shù)一filename:string類型的圖片路徑,參數(shù)二flags:讀取方式,比如讀取哪個(gè)通道,哪些保留哪些丟棄等。使用規(guī)定好的類型。
# 以灰度圖形式讀取
img = cv.imread("../imgs/opencv.png", cv.IMREAD_GRAYSCALE)
print("灰度圖大小為:", img.shape)
# 以默認(rèn)形式讀取原圖,沒有透明度通道
img1 = cv.imread("../imgs/opencv.png")
print("默認(rèn)方式讀取大小為:", img1.shape)
# 以IMREAD_UNCHANGED形式讀取原圖,有透明度通道
img2 = cv.imread("../imgs/opencv.png", cv.IMREAD_UNCHANGED)
print("不忽略透明度通道大小為:", img2.shape)
# 展示圖像
cv.imshow('img IMREAD_GRAYSCALE', img)
cv.imshow('img1 original', img1)
cv.imshow('img2 original had alpha', img2)
# 窗口停留,0代表無限時(shí)停留
cv.waitKey(0)

控制臺輸出:
灰度圖大小為: (610, 570)
默認(rèn)方式讀取大小為: (610, 570, 3)
不忽略透明度通道大小為: (610, 570, 4) 看!有一個(gè)透明通道吧

opencv+圖像處理(GUI)1-0圖像:創(chuàng)建加載顯示保存關(guān)閉

注意:

  • 文件丟失、權(quán)限不正確、格式不受支持無效等情況,會返回空矩陣
  • 按照BGR通道讀取
  • 讀取類型為IMREAD_GRAYSCALE時(shí)候,和cvtColor()轉(zhuǎn)灰度圖的結(jié)果可能不同
  • 根據(jù)圖片本身內(nèi)容決定類型,而不是根據(jù)文件的擴(kuò)展名
  • 標(biāo)志位為IMREAD_UNCHANGED是原始的不會改變的讀取方式
  • 默認(rèn)情況下,像素?cái)?shù)必須小于2^30??梢允褂孟到y(tǒng)變量OPENCV_IO_MAX_IMAGE_PIXELS設(shè)置限制

3.在窗口中展示圖像

opencv提供imshow()函數(shù),來在指定窗口加載圖像

cv.namedWindow('img IMREAD_GRAYSCALE', cv.WINDOW_NORMAL)
# 參數(shù)一winname:string類型的窗口名稱,參數(shù)二mat:圖像。配合cv.namedWindow使用。
# 展示效果受到圖像本身和namedWindow的類型影響。WINDOW_NORMAL能顯示大于屏幕分辨率的圖像。
cv.imshow('img IMREAD_GRAYSCALE', img)

注意

當(dāng)圖像大小不是255的時(shí)候,一般采取除法或者乘法轉(zhuǎn)為0-255顯示

  • 如果圖像像素大小為8bit,也就是2的8次方=256像素的,直接顯示。
  • 如果圖像是16bit的,也就是2的16次方=256*256=25536像素的,會映射為0-255大小顯示。
  • 如果是浮點(diǎn)數(shù)0-1的,會映射為0-255大小顯示

4.將圖像寫入文件

保存圖像有兩種方法

  1. 按下Ctrl+S將顯示本地對話框自行選擇保存圖像。按下Ctrl+C會復(fù)制圖像到剪切板
    opencv+圖像處理(GUI)1-0圖像:創(chuàng)建加載顯示保存關(guān)閉

  2. 結(jié)合waitKey用代碼控制

    # waitKey(0)將無限顯示窗口,直到按下任何鍵為止,適用于想顯示圖像的時(shí)候。
    # waitKey(25)將顯示一幀并等待大約25ms的按鍵,適用于逐幀顯示視頻的時(shí)候。
    k=cv.waitKey(0)
    # 在無限顯示窗口的時(shí)候,按下s,則保存到本地路徑
    #imwrite參數(shù)一filename:保存的路徑,參數(shù)二img要保存的圖像,參數(shù)三params可選,對特定格式進(jìn)行編碼
    if k == ord("s"):
        cv.imwrite("opencv1.png", img)
    

注意

保存的時(shí)候可以決定圖像的保存形式。
只有8bit的單通道或者BGR三通道能用這個(gè)函數(shù)直接保存,其他的需要特定格式或者特殊處理,例如16bit需要特定保存為PNG, JPEG 2000, 和TIFF 形式。

5.關(guān)閉窗口

程序最后加cv.destroyAllWindows()就好啦,釋放一下資源。其實(shí)在簡單程序中,加不加都行,關(guān)閉程序就自動釋放了。

6.整合代碼

以上所有知識點(diǎn)的整合,通常圖片讀取步驟,按需取用。
文件結(jié)構(gòu):
opencv+圖像處理(GUI)1-0圖像:創(chuàng)建加載顯示保存關(guān)閉
完整代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-420566.html

import cv2 as cv
import  sys
# 創(chuàng)建窗口
# 參數(shù)一winname:string類型的窗口名稱,參數(shù)二flags:窗口類型,使用規(guī)定好的類型,默認(rèn)WINDOW_AUTOSIZE
cv.namedWindow('img IMREAD_GRAYSCALE', cv.WINDOW_NORMAL)
cv.namedWindow('img1 original', cv.WINDOW_NORMAL)
cv.namedWindow('img2 original had alpha', cv.WINDOW_NORMAL)

# 讀取圖像
# 參數(shù)一filename:string類型的圖片路徑,參數(shù)二flags:讀取方式,比如讀取哪個(gè)通道,哪些保留哪些丟棄等。使用規(guī)定好的類型。
# 以灰度圖形式讀取
img = cv.imread("../imgs/opencv.png", cv.IMREAD_GRAYSCALE)
# 因?yàn)閕mread讀取不到的時(shí)候不會報(bào)錯(cuò),所有這里需要判空
if img is None:
    sys.exit("Could not read the image.")
print("灰度圖大小為:", img.shape)
# 以默認(rèn)形式讀取原圖,沒有透明度通道
img1 = cv.imread("../imgs/opencv.png")
print("默認(rèn)方式讀取大小為:", img1.shape)
# 以IMREAD_UNCHANGED形式讀取原圖,有透明度通道
img2 = cv.imread("../imgs/opencv.png", cv.IMREAD_UNCHANGED)
print("不忽略透明度通道大小為:", img2.shape)
# 展示圖像
# 參數(shù)一winname:string類型的窗口名稱,參數(shù)二mat:圖像。配合cv.namedWindow使用。
cv.imshow('img IMREAD_GRAYSCALE', img)
cv.imshow('img1 original', img1)
cv.imshow('img2 original had alpha', img2)
# waitKey(0)將無限顯示窗口,直到按下任何鍵為止,適用于想顯示圖像的時(shí)候。
# waitKey(25)將顯示一幀并等待大約25ms的按鍵,適用于逐幀顯示視頻的時(shí)候。
k = cv.waitKey(0)
if k == ord("s"):
    cv.imwrite("../imgs/opencv1.png", img)
cv.destroyAllWindows()

到了這里,關(guān)于opencv+圖像處理(GUI)1-0圖像:創(chuàng)建加載顯示保存關(guān)閉的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • MATLAB GUI的多種數(shù)字圖像處理(圖像風(fēng)格化)

    MATLAB GUI的多種數(shù)字圖像處理(圖像風(fēng)格化)

    ??? 本課程設(shè)計(jì)基于MATLAB GUI進(jìn)行創(chuàng)建UI界面,并集成多種圖像處理,包括圖像模糊、圖像銳化、BBHE直方圖均衡化、圖像素描、圖像反色、圖像浮雕、canny邊緣檢測、圖像膨脹、圖像腐蝕、圖像油畫功能,同時(shí)也給了保存圖像的功能,經(jīng)運(yùn)行驗(yàn)證,UI界面可視化良好,圖像處理

    2024年02月03日
    瀏覽(23)
  • 【MATLAB GUI】 5. 圖像處理菜單(菜單編輯器)

    【MATLAB GUI】 5. 圖像處理菜單(菜單編輯器)

    看B站up主freexyn的freexyn編程實(shí)例視頻教程系列36Matlab GUI的學(xué)習(xí)筆記 任務(wù)要求設(shè)計(jì)一個(gè)圖像處理菜單,實(shí)現(xiàn)圖像的打開導(dǎo)入、灰度處理、存儲等功能 修改過文件名,所以運(yùn)行的時(shí)候會有一點(diǎn)點(diǎn)報(bào)錯(cuò),但是不影響運(yùn)行 打開工具欄下邊的菜單編輯器,新建5個(gè)菜單 修改菜單文本,新

    2024年02月22日
    瀏覽(20)
  • 基于OpenCV的傳統(tǒng)視覺應(yīng)用 -- OpenCV圖像處理 圖像模糊處理 圖像銳化處理

    基于OpenCV的傳統(tǒng)視覺應(yīng)用 -- OpenCV圖像處理 圖像模糊處理 圖像銳化處理

    圖像處理是用計(jì)算機(jī)對圖像進(jìn)行分析,以獲取所需結(jié)果的過程,又稱為影像處理。圖像處理一般是指數(shù)字圖像的處理。數(shù)字圖像是用工業(yè)相機(jī)、攝像機(jī)、掃描儀等設(shè)備經(jīng)過拍攝得到的一個(gè)大的二維數(shù)組,該數(shù)組的元素稱為像素,其值稱為灰度值。 均值濾波是指任意一點(diǎn)的像素

    2024年02月07日
    瀏覽(99)
  • OpenCV(加載、修改、保存圖像)

    OpenCV(加載、修改、保存圖像)

    目錄 1、圖像加載 2、顯示圖像 3、修改圖像 4、圖像保存 OpenCV官方文檔查詢地址:OpenCV: OpenCV modules ?加載圖像(用cv::imread ) imread 功能是加載圖像文件成為一個(gè)Mat對象,其中第一個(gè)參數(shù)表示圖像文件名稱 第二個(gè)參數(shù),表示加載的圖像是什么類型,支持常見的三個(gè)參數(shù)值: I

    2024年02月12日
    瀏覽(23)
  • OpenCV圖像處理-灰度處理

    OpenCV圖像處理-灰度處理

    灰度的線性變換將圖像中的所有像素點(diǎn)的值按 線性變換函數(shù) 進(jìn)行變換。 在曝光不足或過度的情況下,圖像的灰度值會局限在一個(gè)很小的范圍內(nèi),這時(shí)在顯示器上看到的將是一個(gè)模糊不清、似乎沒有層次的圖像。 針對這一情況,使用一個(gè)線性單值函數(shù)對圖像內(nèi)的每一個(gè)像素做

    2024年02月08日
    瀏覽(46)
  • opencv 圖像基礎(chǔ)處理_灰度圖像

    opencv 圖像基礎(chǔ)處理_灰度圖像

    二值圖像表示起來簡單方便,但是因?yàn)槠鋬H有黑白兩種顏色,所表示的圖像不夠細(xì)膩。如果想要表現(xiàn)更多的細(xì)節(jié),就需要使用更多的顏色。例如,圖 2-3 中的 lena 圖像是一幅灰度圖像, 它采用了更多的數(shù)值以體現(xiàn)不同的顏色,因此該圖像的細(xì)節(jié)信息更豐富。 通常,計(jì)算機(jī)會將

    2024年02月15日
    瀏覽(36)
  • OpenCV圖像處理-圖像分割-MeanShift

    OpenCV圖像處理-圖像分割-MeanShift

    MeanShift嚴(yán)格說來并不是用來對圖像進(jìn)行分割的,而是在色彩層面的平滑濾波。它會中和色彩分布相近的顏色,平滑色彩細(xì)節(jié),侵蝕掉面積較小的的顏色區(qū)域,它以圖像上任意一點(diǎn)P為圓心,半徑為sp,色彩幅值為sr進(jìn)行不斷地迭代。 語法:pyrMeanShiftFiltering(img, double sp, double sr,

    2024年02月16日
    瀏覽(38)
  • opencv-圖像處理基礎(chǔ)-二值圖像

    opencv-圖像處理基礎(chǔ)-二值圖像

    1.二值圖像 二值圖像是指僅僅包含黑色和白色兩種顏色的圖像。 在計(jì)算機(jī)中,通過一個(gè)柵格狀排列的數(shù)據(jù)集(矩陣)來表示和處理圖像。例如,圖 2-1 是 一個(gè)字母 A 的圖像,計(jì)算機(jī)在處理該圖像時(shí),會首先將其劃分為一個(gè)個(gè)的小方塊,每一個(gè)小方 塊就是一個(gè)獨(dú)立的處理單位

    2024年02月15日
    瀏覽(26)
  • 《數(shù)字圖像處理-OpenCV/Python》連載:形態(tài)學(xué)圖像處理

    《數(shù)字圖像處理-OpenCV/Python》連載:形態(tài)學(xué)圖像處理

    本書京東 優(yōu)惠購書鏈接 https://item.jd.com/14098452.html 本書CSDN 獨(dú)家連載專欄 https://blog.csdn.net/youcans/category_12418787.html 形態(tài)學(xué)圖像處理是基于形狀的圖像處理,基本思想是利用各種形狀的結(jié)構(gòu)元進(jìn)行形態(tài)學(xué)運(yùn)算,從圖像中提取表達(dá)和描繪區(qū)域形狀的結(jié)構(gòu)信息。形態(tài)學(xué)運(yùn)算的數(shù)學(xué)原

    2024年02月19日
    瀏覽(114)
  • 【OpenCV實(shí)現(xiàn)圖像:使用OpenCV進(jìn)行圖像處理之透視變換】

    【OpenCV實(shí)現(xiàn)圖像:使用OpenCV進(jìn)行圖像處理之透視變換】

    透視變換(Perspective Transformation)是一種圖像處理中常用的變換手段,它用于將圖像從一個(gè)視角映射到另一個(gè)視角,常被稱為投影映射。透視變換可以用于矯正圖像中的透視畸變,使得圖像中的物體在新的視平面上呈現(xiàn)更加規(guī)則的形狀。 透視變換通常涉及到尋找圖像中的特定

    2024年02月03日
    瀏覽(30)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包