使用OpenCV在Python中進行圖像操作
點擊下方“AI算法與圖像處理”,一起進步!
重磅干貨,第一時間送達
形態(tài)變換
腐蝕
import?cv2
import?numpy?as?np
image?=?cv2.imread("image1.jpg")

#?Creating?kernel
kernel?=?np.ones((5,?5),?np.uint8)
#?Using?cv2.erode()?method?
image_erode?=?cv2.erode(image,?kernel)
filename?=?'image_erode1.jpg'
#?Using?cv2.imwrite()?method
#?Saving?the?image
cv2.imwrite(filename,?image_erode)

kernel2?=?np.ones((3,?3),?np.uint8)
image_erode2?=?cv2.erode(image,?kernel2,?cv2.BORDER_REFLECT)
filename?=?'image_erode2.jpg'
#?Using?cv2.imwrite()?method
#?Saving?the?image
cv2.imwrite(filename,?image_erode2)

膨脹
kernel3?=?np.ones((5,5),?np.uint8)
image_dilation?=?cv2.dilate(image,?kernel,?iterations=1)
filename?=?'image_dilation.jpg'
#?Using?cv2.imwrite()?method
#?Saving?the?image
cv2.imwrite(filename,?image_dilation)

創(chuàng)建邊框
##?Using?cv2.copyMakeBorder()?method
image_border1?=?cv2.copyMakeBorder(image,?25,?25,?10,?10,?cv2.BORDER_CONSTANT,?None,?value?=?0)
filename?=?'image_border1.jpg'
#?Using?cv2.imwrite()?method
#?Saving?the?image
cv2.imwrite(filename,?image_border1)

#making?a?mirrored?border
image_border2?=?cv2.copyMakeBorder(image,?250,?250,?250,?250,?cv2.BORDER_REFLECT)
filename?=?'image_border2.jpg'
#?Using?cv2.imwrite()?method
#?Saving?the?image
cv2.imwrite(filename,?image_border2)

#making?a?mirrored?border
image_border3?=?cv2.copyMakeBorder(image,?300,?250,?100,?50,?cv2.BORDER_REFLECT)
filename?=?'image_border3.jpg'
#?Using?cv2.imwrite()?method
#?Saving?the?image
cv2.imwrite(filename,?image_border3)

強度變換
對數(shù)變換
#?Apply?log?transform.
c?=?255/(np.log(1?+?np.max(image)))
log_transformed?=?c?*?np.log(1?+?image)
#?Specify?the?data?type.
log_transformed?=?np.array(log_transformed,?dtype?=?np.uint8)
cv2.imwrite('log_transformed.jpg',?log_transformed)

線性變換
def?pixelVal(pix,?r1,?s1,?r2,?s2):
????if?(0?<=?pix?and?pix?<=?r1):
????????return?(s1?/?r1)*pix
????elif?(r1?and?pix?<=?r2):
????????return?((s2?-?s1)/(r2?-?r1))?*?(pix?-?r1)?+?s1
????else:
????????return?((255?-?s2)/(255?-?r2))?*?(pix?-?r2)?+?s2
#?Define?parameters.
r1?=?70
s1?=?0
r2?=?140
s2?=?255
#?Vectorize?the?function?to?apply?it?to?each?value?in?the?Numpy?array.
pixelVal_vec?=?np.vectorize(pixelVal)
#?Apply?contrast?stretching.
contrast_stretch?=?pixelVal_vec(image,?r1,?s1,?r2,?s2)
#?Save?edited?image.
cv2.imwrite('contrast_stretch.jpg',?contrast_stretch)

去噪彩色圖像
denoised_image?=?cv2.fastNlMeansDenoisingColored(image,?None,?15,?8,?8,?15)
#?Save?edited?image.
cv2.imwrite('denoised_image.jpg',?denoised_image)

使用直方圖分析圖像
from?matplotlib?import?pyplot?as?plt
histr?=?cv2.calcHist([image],[0],None,[256],[0,256])
plt.plot(histr)

#?alternative?way?to?find?histogram?of?an?image
plt.hist(image.ravel(),256,[0,256])
plt.show()

grey_image?=?cv2.cvtColor(image,?cv2.COLOR_BGR2GRAY)
histogram?=?cv2.calcHist([grey_image],?[0],?None,?[256],?[0,?256])
plt.plot(histogram,?color='k')

for?i,?col?in?enumerate(['b',?'g',?'r']):
????hist?=?cv2.calcHist([image],?[i],?None,?[256],?[0,?256])
????plt.plot(hist,?color?=?col)
????plt.xlim([0,?256])
plt.show()

交流群
歡迎加入公眾號讀者群一起和同行交流,目前有美顏、三維視覺、計算攝影、檢測、分割、識別、NeRF、GAN、算法競賽等微信群
個人微信(如果沒有備注不拉群!) 請注明:地區(qū)+學校/企業(yè)+研究方向+昵稱
下載1:何愷明頂會分享
在「AI算法與圖像處理」公眾號后臺回復:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結分析
下載2:終身受益的編程指南:Google編程風格指南
在「AI算法與圖像處理」公眾號后臺回復:c++,即可下載。歷經(jīng)十年考驗,最權威的編程規(guī)范!
下載3 CVPR2021 在「AI算法與圖像處理」公眾號后臺回復:CVPR,即可下載1467篇CVPR?2020論文 和 CVPR 2021 最新論文

評論
圖片
表情
