宝贝腿开大点我添添你视频男男,中文字幕熟女人妻av一区二区三区,爱色成人网,大地资源高清播放在线观看在线电影在线观看 ,777米奇影视第四色

集團(tuán)站切換校區(qū)

驗(yàn)證碼已發(fā)送,請(qǐng)查收短信

復(fù)制成功
微信號(hào):togogoi
添加微信好友, 詳細(xì)了解課程
已復(fù)制成功,如果自動(dòng)跳轉(zhuǎn)微信失敗,請(qǐng)前往微信添加好友
打開微信
圖標(biāo)

業(yè)界新聞

當(dāng)前位置:首頁 > >業(yè)界新聞 > >

人工智能AI培訓(xùn)_圖像數(shù)據(jù)預(yù)處理實(shí)驗(yàn)

發(fā)布時(shí)間: 2019-08-19 13:42:03

  人工智能AI培訓(xùn)_圖像數(shù)據(jù)預(yù)處理實(shí)驗(yàn)

  1.實(shí)驗(yàn)簡介
  圖像預(yù)處理的主要目的是消除圖像中無關(guān)的信息,恢復(fù)有用的真實(shí)信息,增強(qiáng)有關(guān)信息的可檢測性、較大限度地簡化數(shù)據(jù),從而改進(jìn)特征提取、圖像分割、匹配和識(shí)別的可靠性。

  本實(shí)驗(yàn)使用OpenCV圖像處理庫實(shí)現(xiàn)基本的圖像預(yù)處理操作。包括圖像的顏色空間轉(zhuǎn)換、坐標(biāo)變化、灰度變化、直方圖變化和圖像濾波。

?人工智能AI培訓(xùn)

  2.實(shí)驗(yàn)?zāi)康?/strong>
  本實(shí)驗(yàn)將理論教材中介紹的圖像預(yù)處理技術(shù)通過Python語言的OpenCV圖像處理庫實(shí)現(xiàn)。通過本實(shí)驗(yàn)學(xué)員將了解如何使用OpenCV進(jìn)行圖像預(yù)處理。通過實(shí)際圖像數(shù)據(jù)的變化,加深對(duì)圖像預(yù)處理技術(shù)的感知,本實(shí)驗(yàn)將指導(dǎo)學(xué)員理解和掌握如何使用Python語言進(jìn)行圖像預(yù)處理開發(fā)的方法和技巧。
  3.實(shí)驗(yàn)環(huán)境說明

  本實(shí)驗(yàn)建議安裝3.6以上版本的Python環(huán)境,并且需要安裝OpenCV,numpy,matplotlib第三方庫。

  4.實(shí)驗(yàn)步驟
  4.1.基本操作
  注意:所有實(shí)驗(yàn)1.4中代碼所讀取的圖片,學(xué)員可選用自己電腦本地的圖片讀取;圖片路徑為自己本地的實(shí)際路徑。
  步驟 1圖像的讀取和顯示?

  import cv2
  # 讀取一副圖像 第一個(gè)參數(shù)是圖像路徑
  # 第二個(gè)參數(shù)代表讀取方式,1表示3通道彩色,0表示單通道灰度
  im = cv2.imread(r"lena512color.tiff",1)
  # 在"test"窗口中顯示圖像im
  cv2.imshow("test",im)
  # 等待用戶按鍵反饋
  cv2.waitKey()
  # 銷毀所有創(chuàng)建的窗口
  cv2.destroyAllWindows()
?  步驟 2顯示數(shù)據(jù)類型和圖像尺寸
  # 打印圖像數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型
  print(type(im))
  # 打印圖像的尺寸
  print(im.shape)
  步驟 3圖像的保存
  # 將圖像保存到指定路徑
  cv2.imwrite('lena.jpg',im)
?  4.2.顏色空間轉(zhuǎn)換
  步驟 1彩色圖像灰度化
  import cv2
  im = cv2.imread(r"lena.jpg")
  cv2.imshow("BGR",im)
  # 使用cvtColor進(jìn)行顏色空間變化 cv2.COLOR_BGR2GRAY 代表BGR to gray
  img_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
  cv2.imshow("Gray",img_gray)
  cv2.waitKey()
  cv2.destroyAllWindows()
  步驟 2更換三通道順序BGR為RGB
  import cv2
  im = cv2.imread(r"lena.jpg")
  cv2.imshow("BGR",im)
  # 使用cvtColor進(jìn)行顏色空間變化 cv2.COLOR_BGR2RGB 代表BGR to RGB
  im_rgb = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
  # 當(dāng)圖像數(shù)據(jù)為3通道時(shí),imshow函數(shù)認(rèn)為數(shù)據(jù)是BGR的
  # 使用imshow顯示RGB數(shù)據(jù),會(huì)發(fā)現(xiàn)圖片顯示顏色畸變
  cv2.imshow("RGB",im_rgb)
  cv2.waitKey()
  cv2.destroyAllWindows()
  步驟 3BGR和HSV顏色空間轉(zhuǎn)換
  import cv2
  im = cv2.imread(r"lena.jpg")
  cv2.imshow("BGR",im)
  # 使用cvtColor進(jìn)行顏色空間變化 cv2.COLOR_BGR2HSV 代表BGR to HSV
  im_hsv = cv2.cvtColor(im, cv2.COLOR_BGR2HSV)
  # 當(dāng)圖像數(shù)據(jù)為3通道時(shí),imshow函數(shù)認(rèn)為數(shù)據(jù)是BGR的
  # 使用imshow顯示HSV數(shù)據(jù),會(huì)將HSV分量強(qiáng)行當(dāng)做BGR進(jìn)行顯示
  cv2.imshow("HSV",im_hsv)
  cv2.waitKey()
  cv2.destroyAllWindows()
  4.3.坐標(biāo)變化
  步驟 1平移
  import numpy as np
  import cv2
  # 定義平移translate函數(shù)
  def translate(img, x, y):
  # 獲取圖像尺寸
  (h, w) = img.shape[:2]
  # 定義平移矩陣
  M = np.float32([[1, 0, x], [0, 1, y]])
  # 使用OpenCV仿射變換函數(shù)實(shí)現(xiàn)平移操作
  shifted = cv2.warpAffine(img, M, (w, h))
  # 返回轉(zhuǎn)換后的圖像
  return shifted
  # 加載圖像并顯示
  im = cv2.imread('lena.jpg')
  cv2.imshow("Orig", im)
  # 對(duì)原圖做平移操作
  # 下移50像素
  shifted = translate(im, 0, 50)
  cv2.imshow("Shift1", shifted)
  # 左移100像素
  shifted = translate(im, -100, 0)
  cv2.imshow("Shift2", shifted)
  # 右移50,下移100像素
  shifted = translate(im, 50, 100)
  cv2.imshow("Shift3", shifted)
  cv2.waitKey()
  cv2.destroyAllWindows()
  步驟 2旋轉(zhuǎn)
  import numpy as np
  import cv2
  # 定義旋轉(zhuǎn)rotate函數(shù)
  def rotate(img, angle, center=None, scale=1.0):
  # 獲取圖像尺寸
  (h, w) = img.shape[:2]
  # 旋轉(zhuǎn)中心的缺失值為圖像中心
  if center is None:
  center = (w / 2, h / 2)
  # 調(diào)用計(jì)算旋轉(zhuǎn)矩陣函數(shù)
  M = cv2.getRotationMatrix2D(center, angle, scale)
  # 使用OpenCV仿射變換函數(shù)實(shí)現(xiàn)旋轉(zhuǎn)操作
  rotated = cv2.warpAffine(img, M, (w, h))
  # 返回旋轉(zhuǎn)后的圖像
  return rotated
  im = cv2.imread('lena.jpg')
  cv2.imshow("Orig", im)
  # 對(duì)原圖做旋轉(zhuǎn)操作
  # 逆時(shí)針45度
  rotated = rotate(im, 45)
  cv2.imshow("Rotate1", rotated)
  # 順時(shí)針20度
  rotated = rotate(im, -20)
  cv2.imshow("Rotate2", rotated)
  # 逆時(shí)針90度
  rotated = rotate(im, 90)
  cv2.imshow("Rotate3", rotated)
  cv2.waitKey()
  cv2.destroyAllWindows()
  步驟 3鏡像
  import numpy as np
  import cv2
  im = cv2.imread('lena.jpg')
  cv2.imshow("orig", im)
  # 進(jìn)行水平鏡像
  im_flip0 = cv2.flip(im, 0)
  cv2.imshow("flip vertical ", im_flip0)
  # 進(jìn)行垂直鏡像
  im_flip1 = cv2.flip(im, 1)
  cv2.imshow("flip horizontal ", im_flip1)
  cv2.waitKey()
  cv2.destroyAllWindows()
  步驟 4縮放
  import numpy as np
  import cv2
  im = cv2.imread('lena.jpg')
  cv2.imshow("orig", im)
  # 獲取圖像尺寸
  (h, w) = im.shape[:2]
  # 縮放的目標(biāo)尺寸
  dst_size = (200,300)
  # 最鄰近插值
  method = cv2.INTER_NEAREST
  # 進(jìn)行縮放
  resized = cv2.resize(im, dst_size, interpolation = method)
  cv2.imshow("resized1", resized)
  # 縮放的目標(biāo)尺寸
  dst_size = (800,600)
  # 雙線性插值
  method = cv2.INTER_LINEAR
  # 進(jìn)行縮放
  resized = cv2.resize(im, dst_size, interpolation = method)
  cv2.imshow("resized2", resized)
  cv2.waitKey()
  cv2.destroyAllWindows()
  4.4.灰度變化
  步驟 1灰度變化。反轉(zhuǎn),灰度拉伸,灰度壓縮
  import numpy as np
  import cv2
  from matplotlib import pyplot as plt
  # 定義線性灰度變化函數(shù)
  # k>1時(shí) 實(shí)現(xiàn)灰度數(shù)值的拉伸
  # 0<k<1時(shí) 實(shí)現(xiàn)灰度數(shù)值的壓縮
  # k=-1 b=255 實(shí)現(xiàn)灰度反轉(zhuǎn)
  def linear_trans(img, k, b=0):
  # 計(jì)算灰度線性變化的映射表
  trans_list = [(np.float32(x)*k+b) for x in range(256)]
  # 將列表轉(zhuǎn)換為np.array
  trans_table =np.array(trans_list)
  # 將超過[0,255]灰度范圍的數(shù)值進(jìn)行調(diào)整,并指定數(shù)據(jù)類型為uint8
  trans_table[trans_table>255] = 255
  trans_table[trans_table<0] = 0
  trans_table = np.round(trans_table).astype(np.uint8)
  # 使用OpenCV的look up table函數(shù)修改圖像的灰度值
  return cv2.LUT(img, trans_table)
  im = cv2.imread('lena.jpg',0)
  cv2.imshow('org', im)
  # 反轉(zhuǎn)
  im_inversion = linear_trans(im, -1, 255)
  cv2.imshow('inversion', im_inversion)
  # 灰度拉伸
  im_stretch = linear_trans(im, 1.2)
  cv2.imshow('graystretch', im_stretch)
  # 灰度壓縮
  im_compress = linear_trans(im, 0.8)
  cv2.imshow('graycompress', im_compress)
  cv2.waitKey()
  cv2.destroyAllWindows()
  步驟 2伽馬變化
  import numpy as np
  import cv2
  from matplotlib import pyplot as plt
  # 定義伽馬變化函數(shù)
  def gamma_trans(img, gamma):
  # 先歸一化到1,做伽馬計(jì)算,再還原到[0,255]
  gamma_list = [np.power(x / 255.0, gamma) * 255.0 for x in range(256)]
  # 將列表轉(zhuǎn)換為np.array,并指定數(shù)據(jù)類型為uint8
  gamma_table = np.round(np.array(gamma_list)).astype(np.uint8)
  # 使用OpenCV的look up table函數(shù)修改圖像的灰度值
  return cv2.LUT(img, gamma_table)
  im = cv2.imread('lena.jpg',0)
  cv2.imshow('org', im)
  # 使用伽馬值為0.5的變化,實(shí)現(xiàn)對(duì)暗部的拉升,亮部的壓縮
  im_gama05 = gamma_trans(im, 0.5)
  cv2.imshow('gama0.5', im_gama05)
  # 使用伽馬值為2的變化,實(shí)現(xiàn)對(duì)亮部的拉升,暗部的壓縮
  im_gama2 = gamma_trans(im, 2)
  cv2.imshow('gama2', im_gama2)
  cv2.waitKey()
  cv2.destroyAllWindows()
  4.5.直方圖
  步驟 1直方圖的顯示
  import cv2
  from matplotlib import pyplot as plt
  # 讀取并顯示圖像
  im = cv2.imread("lena.jpg",0)
  cv2.imshow('org', im)
  # 繪制灰度圖像的直方圖
  plt.hist(im.ravel(), 256, [0,256])
  plt.show()
  # 等待用戶按鍵反饋
  cv2.waitKey()
  cv2.destroyAllWindows()
  步驟 2直方圖均衡化
  import cv2
  from matplotlib import pyplot as plt
  im = cv2.imread("lena.jpg",0)
  cv2.imshow('org', im)
  # 調(diào)用OpenCV的直方圖均衡化API
  im_equ1 = cv2.equalizeHist(im)
  cv2.imshow('equal', im_equ1)
  # 顯示原始圖像的直方圖
  plt.subplot(2,1,1)
  plt.hist(im.ravel(), 256, [0,256],label='org')
  plt.legend()
  # 顯示均衡化圖像的直方圖
  plt.subplot(2,1,2)
  plt.hist(im_equ1.ravel(), 256, [0,256],label='equalize')
  plt.legend()
  plt.show()
  # 等待用戶按鍵反饋后銷毀窗口
  cv2.waitKey()
  cv2.destroyAllWindows()
  4.6.濾波
  步驟 1中值濾波
  import cv2
  import numpy as np
  im = cv2.imread('lena.jpg')
  cv2.imshow('org',im)
  # 調(diào)用OpenCV的中值模糊API
  im_medianblur = cv2.medianBlur(im, 5)
  cv2.imshow('median_blur',im_medianblur)
  cv2.waitKey(0)
  cv2.destroyAllWindows()
  步驟 2均值濾波
  # 方法一:直接調(diào)用OpenCV的API
  import cv2
  import numpy as np
  im = cv2.imread('lena.jpg')
  cv2.imshow('org',im)
  # 調(diào)用OpenCV的均值模糊API
  im_meanblur1 = cv2.blur(im, (3, 3))
  cv2.imshow('mean_blur_1',im_meanblur1)
  cv2.waitKey(0)
  cv2.destroyAllWindows()
  # 方法二:使用均值算子和filter2D 自定義濾波操作
  import cv2
  import numpy as np
  im = cv2.imread('lena.jpg')
  cv2.imshow('org',im)
  # 均值算子
  mean_blur = np.ones([3, 3], np.float32)/9
  # 使用filter2D進(jìn)行濾波操作
  im_meanblur2 = cv2.filter2D(im,-1,mean_blur)
  cv2.imshow('mean_blur_2',im_meanblur2)
  cv2.waitKey(0)
  cv2.destroyAllWindows()
  步驟 3高斯濾波
  # 方法一:直接調(diào)用OpenCV的API
  import cv2
  import numpy as np
  im = cv2.imread('lena.jpg')
  cv2.imshow('org',im)
  # 調(diào)用OpenCV的高斯模糊API
  im_gaussianblur1 = cv2.GaussianBlur(im, (5, 5), 0)
  cv2.imshow('gaussian_blur_1',im_gaussianblur1)
  cv2.waitKey(0)
  cv2.destroyAllWindows()
  # 方法二:使用高斯算子和filter2D 自定義濾波操作
  import cv2
  import numpy as np
  im = cv2.imread('lena.jpg')
  cv2.imshow('org',im)
  # 高斯算子
  gaussian_blur = np.array([
  [1,4,7,4,1],
  [4,16,26,16,4],
  [7,26,41,26,7],
  [4,16,26,16,4],
  [1,4,7,4,1]], np.float32)/273
  # 使用filter2D進(jìn)行濾波操作
  im_gaussianblur2 = cv2.filter2D(im,-1,gaussian_blur)
  cv2.imshow('gaussian_blur_2',im_gaussianblur2)
  cv2.waitKey(0)
  cv2.destroyAllWindows()
  步驟 4銳化
  import cv2
  import numpy as np
  im = cv2.imread('lena.jpg')
  cv2.imshow('org',im)
  # 銳化算子
  sharpen_1 = np.array([
  [-1,-1,-1],
  [-1,9,-1],
  [-1,-1,-1]])
  # 使用filter2D進(jìn)行濾波操作
  im_sharpen1 = cv2.filter2D(im,-1,sharpen_1)
  cv2.imshow('sharpen_1',im_sharpen1)
  # 銳化算子2
  sharpen_2 = np.array([
  [0,-1,0],
  [-1,8,-1],
  [0,1,0]])/4.0
  # 使用filter2D進(jìn)行濾波操作
  im_sharpen2 = cv2.filter2D(im,-1,sharpen_2)
  cv2.imshow('sharpen_2',im_sharpen2)
  cv2.waitKey(0)
  cv2.destroyAllWindows()
?  5.實(shí)驗(yàn)小結(jié)
  本章主要介紹了應(yīng)用基于Python語言的OpenCV圖像處理庫進(jìn)行圖像預(yù)處理實(shí)驗(yàn)的具體操作。使用OpenCV圖像處理庫實(shí)現(xiàn)了圖像的顏色空間轉(zhuǎn)換、坐標(biāo)變化、灰度變化、直方圖變化和圖像濾波。加深對(duì)圖像預(yù)處理技術(shù)的感知,為使用圖像預(yù)處理技術(shù)提供了實(shí)際的操作指導(dǎo)。

上一篇: 大數(shù)據(jù)培訓(xùn)_為什么Spark比MapReduce快100X

下一篇: H5培訓(xùn)_H5導(dǎo)航制作

在線咨詢 ×

您好,請(qǐng)問有什么可以幫您?我們將竭誠提供最優(yōu)質(zhì)服務(wù)!