1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        學習Python你必須了解的lenna小姐姐

        共 1306字,需瀏覽 3分鐘

         ·

        2020-09-01 02:42

        lenna小姐姐作為圖像領域中的hello world,20世紀的跨界達人,幾代人的戰(zhàn)斗對象。對于入門Python的你如果了解了lenna小姐姐,那可相當于半根腳趾頭踏入了圖像處理的大門,所以今天從下面幾個方面給大家介紹一下lenna小姐姐

        • lenna是誰?

        • 為什么選這張圖?

        • 都對lenna做了什么?

        • lenna近照

        lenna是誰?

        萊娜·瑟德貝里(瑞典文:Lena Soderberg),1951年3月31日出生于瑞典,在1972年11月期的《花花公子》雜志中,她化名為萊娜·舍布洛姆,成為了當期的玩伴女郎。

        她的照片(即萊娜圖)后來被數字圖像處理領域所廣泛使用。

        為什么選這張圖?

        主要有三個原因

        • 這張圖適度的混合了細節(jié)、平滑區(qū)域、陰影和紋理,從而能很好的測試各種圖像處理算法
        • 這張圖的Lena是個美女,對于圖像處理界的研究者(大部分都是男性)來說,美女圖可以有效的吸引他們來做研究
        • 該照片的全圖實在太吸引眼球,廣為流傳的圖僅為全圖的1/3,(全圖這里實在放不了,一放就封號)

        都對lenna做了什么?

        通過cv2包,科研人員對這張圖無所不用其極,繪圖顯示、切分、濾鏡、校正、旋轉、變換,行哥這里將源碼和結果一一附上

        1.灰度顯示

        img_gray?=?cv2.imread('lenna.jpg',0)
        cv2.imshow('lenna',?img_gray)
        #?判斷鍵盤按鍵
        key?=?cv2.waitKey()
        if?key?==?27:
        ????cv2.destroyAllWindows()

        2.截圖顯示

        img_crop?=?img[0:100,?0:200]
        cv2.imshow('lena_crop',img_crop)
        #?判斷鍵盤按鍵???如果是27?esc?則退出游戲
        key?=?cv2.waitKey()
        if?key?==?27:
        ????cv2.destroyAllWindows()

        3.RGB轉換

        B,G,R?=?cv2.split(img)
        cv2.imshow('B',B)
        cv2.imshow('G',R)
        cv2.imshow('R',R)
        key?=?cv2.waitKey()
        if?key?==?27:
        ????cv2.destroyAllWindows()

        4.加入濾鏡

        def?random_light_color(img):
        ????#?brightness
        ????B,?G,?R?=?cv2.split(img)

        ????b_rand?=?random.randint(-50,?50)
        ????if?b_rand?==?0:
        ????????pass
        ????elif?b_rand?>?0:
        ????????lim?=?255?-?b_rand
        ????????B[B?>?lim]?=?255
        ????????B[B?<=?lim]?=?(b_rand?+?B[B?<=?lim]).astype(img.dtype)
        ????elif?b_rand?0:
        ????????lim?=?0?-?b_rand
        ????????B[B?0
        ????????B[B?>=?lim]?=?(b_rand?+?B[B?>=?lim]).astype(img.dtype)

        ????g_rand?=?random.randint(-50,?50)
        ????if?g_rand?==?0:
        ????????pass
        ????elif?g_rand?>?0:
        ????????lim?=?255?-?g_rand
        ????????G[G?>?lim]?=?255
        ????????G[G?<=?lim]?=?(g_rand?+?G[G?<=?lim]).astype(img.dtype)
        ????elif?g_rand?0:
        ????????lim?=?0?-?g_rand
        ????????G[G?0
        ????????G[G?>=?lim]?=?(g_rand?+?G[G?>=?lim]).astype(img.dtype)

        ????r_rand?=?random.randint(-50,?50)
        ????if?r_rand?==?0:
        ????????pass
        ????elif?r_rand?>?0:
        ????????lim?=?255?-?r_rand
        ????????R[R?>?lim]?=?255
        ????????R[R?<=?lim]?=?(r_rand?+?R[R?<=?lim]).astype(img.dtype)
        ????elif?r_rand?0:
        ????????lim?=?0?-?r_rand
        ????????R[R?0
        ????????R[R?>=?lim]?=?(r_rand?+?R[R?>=?lim]).astype(img.dtype)

        ????img_merge?=?cv2.merge((B,?G,?R))
        ????#img?=?cv2.cvtColor(final_hsv,?cv2.COLOR_HSV2BGR)
        ????return?img_merge

        img_random_color?=?random_light_color(img)
        cv2.imshow('img_random_color',?img_random_color)
        key?=?cv2.waitKey()
        if?key?==?27:
        ????cv2.destroyAllWindows()

        5.gamma校正


        def?adjust_gamma(image,?gamma=1.0):
        ????invGamma?=?1.0?/?gamma
        ????table?=?[]
        ????for?i?in?range(256):
        ????????table.append(((i?/?255.0)?**?invGamma)?*?255)
        ????table?=?np.array(table).astype("uint8")
        ????return?cv2.LUT(img_dark,?table)

        img_dark?=?cv2.imread('material/lenna.jpg')
        cv2.imshow('img_dark',?img_dark)
        img_brighter?=?adjust_gamma(img_dark,?2)
        cv2.imshow('img_dark',?img_dark)
        cv2.imshow('img_brighter',?img_brighter)
        key?=?cv2.waitKey()
        if?key?==?27:
        ????cv2.destroyAllWindows()

        6.圖像旋轉

        M?=?cv2.getRotationMatrix2D((img.shape[1]?/?2,?img.shape[0]?/?2),?30,?1)??#?center,?angle,?scale
        img_rotate?=?cv2.warpAffine(img,?M,?(img.shape[1],?img.shape[0]))
        cv2.imshow('rotated?lenna',?img_rotate)
        key?=?cv2.waitKey(0)
        if?key?==?27:
        ????cv2.destroyAllWindows()

        7.仿射變換

        rows,?cols,?ch?=?img.shape
        pts1?=?np.float32([[0,?0],?[cols?-?1,?0],?[0,?rows?-?1]])
        pts2?=?np.float32([[cols?*?0.2,?rows?*?0.1],?[cols?*?0.9,?rows?*?0.2],?[cols?*?0.1,?rows?*?0.9]])

        M?=?cv2.getAffineTransform(pts1,?pts2)
        dst?=?cv2.warpAffine(img,?M,?(cols,?rows))

        cv2.imshow('affine?lenna',?dst)
        key?=?cv2.waitKey(0)
        if?key?==?27:
        ????cv2.destroyAllWindows()

        8.透視變化

        def?random_warp(img,?row,?col):
        ????height,?width,?channels?=?img.shape

        ????#?warp:
        ????random_margin?=?60
        ????x1?=?random.randint(-random_margin,?random_margin)
        ????y1?=?random.randint(-random_margin,?random_margin)
        ????x2?=?random.randint(width?-?random_margin?-?1,?width?-?1)
        ????y2?=?random.randint(-random_margin,?random_margin)
        ????x3?=?random.randint(width?-?random_margin?-?1,?width?-?1)
        ????y3?=?random.randint(height?-?random_margin?-?1,?height?-?1)
        ????x4?=?random.randint(-random_margin,?random_margin)
        ????y4?=?random.randint(height?-?random_margin?-?1,?height?-?1)

        ????dx1?=?random.randint(-random_margin,?random_margin)
        ????dy1?=?random.randint(-random_margin,?random_margin)
        ????dx2?=?random.randint(width?-?random_margin?-?1,?width?-?1)
        ????dy2?=?random.randint(-random_margin,?random_margin)
        ????dx3?=?random.randint(width?-?random_margin?-?1,?width?-?1)
        ????dy3?=?random.randint(height?-?random_margin?-?1,?height?-?1)
        ????dx4?=?random.randint(-random_margin,?random_margin)
        ????dy4?=?random.randint(height?-?random_margin?-?1,?height?-?1)

        ????pts1?=?np.float32([[x1,?y1],?[x2,?y2],?[x3,?y3],?[x4,?y4]])
        ????pts2?=?np.float32([[dx1,?dy1],?[dx2,?dy2],?[dx3,?dy3],?[dx4,?dy4]])
        ????M_warp?=?cv2.getPerspectiveTransform(pts1,?pts2)
        ????img_warp?=?cv2.warpPerspective(img,?M_warp,?(width,?height))
        ????return?M_warp,?img_warp


        M_warp,?img_warp?=?random_warp(img,?img.shape[0],?img.shape[1])
        cv2.imshow('lenna_warp',?img_warp)
        key?=?cv2.waitKey(0)
        if?key?==?27:
        ????cv2.destroyAllWindows()

        lenna近照

        lenna近照

        再厲害的圖片處理,也抵擋不過時間的威力,將近七旬的“小姐姐”以另一種方式為圖片處理領域作出了自己的貢獻

        致敬

        推薦閱讀

        (點擊標題可跳轉閱讀)

        12歲小讀者使用Python暴力破解Wi-Fi密碼

        《黑神話:悟空》B站彈幕、知乎回答分析


        瀏覽 58
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产午夜无码福利视频 | 翔田千里av电影 看男人操女人逼 | 做爱视频在线免费观看 | 欧美日韩成人 | 激情久久影院 | 欧美视频一区二区 | 男生插女生的下面 | 天天久网天天综合网 | 超碰在线伊人 | 污污视频网站免费在线观看 |