最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用python opencv對畸變圖像進行矯正的實現(xiàn)

 更新時間:2022年05月07日 10:50:11   作者:燕陽天  
本文主要介紹了使用python opencv對畸變圖像進行矯正的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

代碼:

__Author__ = "Shliang"
__Email__ = "shliang0603@gmail.com"

import os
import cv2
import numpy as np
from tqdm import tqdm



def undistort(frame):
    fx = 685.646752
    cx = 649.107905
    fy = 676.658033
    cy = 338.054431
    k1, k2, p1, p2, k3 = -0.363219, 0.093818, 0.006178, -0.003714, 0.0

    # 相機坐標(biāo)系到像素坐標(biāo)系的轉(zhuǎn)換矩陣
    k = np.array([
        [fx, 0, cx],
        [0, fy, cy],
        [0, 0, 1]
    ])
    # 畸變系數(shù)
    d = np.array([
        k1, k2, p1, p2, k3
    ])
    h, w = frame.shape[:2]
    mapx, mapy = cv2.initUndistortRectifyMap(k, d, None, k, (w, h), 5)
    return cv2.remap(frame, mapx, mapy, cv2.INTER_LINEAR)


# 對攝像頭實時視頻流做畸變矯正
def distortion_correction_cam():
    cap = cv2.VideoCapture(0)
    while (cap.isOpened()):
        ret, frame = cap.read()
        undistort_frame = undistort(frame)
        compare = np.hstack((frame, undistort_frame))
        cv2.imshow('frame', compare)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cap.release()
    cv2.destroyAllWindows()


# 對目錄下的所有圖片做畸變矯正,并把畸變矯正后的圖片保存下來
def distortion_correction_imgs(input_dir, output_dir):
    in_imgs = os.listdir(input_dir)

    for img_name in tqdm(in_imgs):
        image = cv2.imread(os.path.join(input_dir, img_name))
        distroted_img = undistort(image)
        cv2.imwrite(os.path.join(output_dir, img_name), distroted_img)



if __name__ == '__main__':
    input_dir = "/home/shl/extract_rosbag_data/0324_bags/plycal_calib/root/images"
    output_dir = "/home/shl/extract_rosbag_data/0324_bags/plycal_calib/root/distro_imgs"
    # distortion_correction_imgs(input_dir, output_dir)

    distortion_correction_cam()

對圖片進行矯正效果:

原圖:

矯正后的圖片:

采集的攝像頭畫面矯正效果:

從上面的換面可以看到,左邊是未矯正的畫面,右邊是矯正后的畫面

  • 矯正后的畫面會被裁切,明顯可以看到畫面中的信息是有裁切的,例如左邊的椅子已經(jīng)被裁切掉了
  • 矯正后的畫面和原畫面是保持相同的分辨率:640x480,但是,為什么會看到畫面會出現(xiàn)橫向的拉伸,這是因為標(biāo)定相機內(nèi)參的時候畫面的分辨率設(shè)置為1280x720=16:9,但是opencv讀取攝像頭默認的分辨率卻是640x480=4:3,兩者的比例都不一樣,所以肯定會出現(xiàn)拉伸

解決拉伸的方式,就是把讀取攝像頭的時候,把攝像頭的分辨率設(shè)置成和標(biāo)定的時候一樣的分辨率,設(shè)置為1280x720,下面是如何在opencv讀取攝像頭的時候設(shè)置攝像頭分辨率:

# 對攝像頭實時視頻流做畸變矯正
def distortion_correction_cam():
    cap = cv2.VideoCapture(0)

    # 獲取攝像頭讀取畫面的寬和高
    width = cap.get(3)
    height = cap.get(4)
    fps = cap.get(5)
    print(width, height, fps)  # 640.0 480.0 30.0

    # 在這里把攝像頭的分辨率修改為和我們標(biāo)定時使用的一樣的分辨率 1280x720
    cap.set(3, 1280)
    cap.set(4, 720)
    width = cap.get(3)
    height = cap.get(4)
    print(width, height, fps)  # 1280.0 720.0 30.0


    while (cap.isOpened()):
        ret, frame = cap.read()
        print(frame.shape)
        undistort_frame = undistort(frame)
        compare = np.hstack((frame, undistort_frame))
        cv2.imshow('frame', compare)

        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    cap.release()
    cv2.destroyAllWindows()

重新設(shè)置分辨率后,矯正前后畫面對比,可以看到幾乎是沒有橫向或縱向拉伸的!

參考:

https://blog.csdn.net/weixin_40516558/article/details/103494029

https://blog.csdn.net/guaiderzhu1314/article/details/96306509

https://www.codenong.com/cs110623399/

到此這篇關(guān)于使用python opencv對畸變圖像進行矯正的實現(xiàn)的文章就介紹到這了,更多相關(guān)python opencv畸變圖像矯正內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pytorch中torch.utils.checkpoint()及用法詳解

    Pytorch中torch.utils.checkpoint()及用法詳解

    在PyTorch中,torch.utils.checkpoint?模塊提供了實現(xiàn)梯度檢查點(也稱為checkpointing)的功能,這篇文章給大家介紹了Pytorch中torch.utils.checkpoint()的相關(guān)知識,感興趣的朋友一起看看吧
    2024-03-03
  • 使用python PIL庫實現(xiàn)簡單驗證碼的去噪方法步驟

    使用python PIL庫實現(xiàn)簡單驗證碼的去噪方法步驟

    這篇文章主要介紹了使用python PIL庫實現(xiàn)簡單驗證碼的去噪方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • python之import機制詳解

    python之import機制詳解

    這篇文章主要介紹了python的import機制,需要的朋友可以參考下
    2014-07-07
  • 對python numpy數(shù)組中冒號的使用方法詳解

    對python numpy數(shù)組中冒號的使用方法詳解

    下面小編就為大家分享一篇對python numpy數(shù)組中冒號的使用方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python實戰(zhàn)項目之MySQL tkinter pyinstaller實現(xiàn)學(xué)生管理系統(tǒng)

    Python實戰(zhàn)項目之MySQL tkinter pyinstaller實現(xiàn)學(xué)生管理系統(tǒng)

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用MySQL、tkinter、 pyinstaller實現(xiàn)一個學(xué)生管理系統(tǒng),大家可以通過案例查缺補漏,提升水平
    2021-10-10
  • python中的httpx異步請求

    python中的httpx異步請求

    這篇文章主要介紹了python中的httpx異步請求方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • python從網(wǎng)絡(luò)讀取圖片并直接進行處理的方法

    python從網(wǎng)絡(luò)讀取圖片并直接進行處理的方法

    這篇文章主要介紹了python從網(wǎng)絡(luò)讀取圖片并直接進行處理的方法,涉及cStringIO模塊模擬本地文件的使用技巧,需要的朋友可以參考下
    2015-05-05
  • keras中的卷積層&池化層的用法

    keras中的卷積層&池化層的用法

    這篇文章主要介紹了keras中的卷積層&池化層的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 詳解Django模板層過濾器和繼承的問題

    詳解Django模板層過濾器和繼承的問題

    今天抽空給大家介紹Django模板層過濾器和繼承的問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-07-07
  • python 爬蟲網(wǎng)頁登陸的簡單實現(xiàn)

    python 爬蟲網(wǎng)頁登陸的簡單實現(xiàn)

    這篇文章主要介紹了python 爬蟲網(wǎng)頁登陸的簡單實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評論

天等县| 甘泉县| 平舆县| 枞阳县| 孟村| 娄烦县| 临武县| 运城市| 漳州市| 宜宾县| 定西市| 明溪县| 剑阁县| 富源县| 东城区| 伊通| 纳雍县| 龙里县| 东平县| 永清县| 大悟县| 五指山市| 滁州市| 上犹县| 博客| 和静县| 黎川县| 潜山县| 山东省| 贡觉县| 弋阳县| 平定县| 平果县| 万山特区| 普定县| 马关县| 文山县| 丹江口市| 栾川县| 南京市| 淮安市|