linux下用python進行opencv開發----簡單的圖片操作
阿新 • • 發佈:2019-01-23
初學opencv做的例子程式,儲存一下。
之所以選擇用python,是因為python上手快,開發快。
#!/usr/bin/python2 # coding: utf-8 import cv2 import numpy as np #原始圖片 image = cv2.imread('./meinv2_original.jpg', cv2.CV_LOAD_IMAGE_COLOR) cv2.imshow('Original image', image) #擷取圖片的一部分,即ROI(region of interest) #因為在python cv2中圖片以ndarray格式表示,所以直接用ndarray的 #分片方式能非常容易的擷取ROI,跟python中list的分片用法一樣,只不過 #這個是在二維陣列上分片 crop = image[0:201, 100:301] #分片都是不包含後面一個引數的,所以多1 cv2.imshow('Crop image', crop) cv2.imwrite('./meinv2_crop.jpg', crop) #處理過的灰度圖片 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) cv2.imshow('Gray image', gray) cv2.imwrite('./meinv2_gray.jpg', gray) #在圖片上畫一個框 imageRect = image.copy() p1 = (300, 200) p2 = (500, 300) color = (0, 0, 255) #BGR的順序,這個顏色為紅色 cv2.rectangle(imageRect, p1, p2, color) cv2.imshow('Rectangle an image', imageRect) cv2.imwrite('./meinv2_rect.jpg', imageRect) #圖片縮放 size = (400, 300) imageResize = cv2.resize(image, size) #可以不指定縮放的圖片大小,而指定縮放比例,如下,等比縮放到一半大小 #即將縮放尺寸設為0,然後再分別設定xy方向上的縮放比例 #imageResize = cv2.resize(image, (0,0), fx=0.5, fy=0.5) cv2.imshow('Resize an image', imageResize) cv2.imwrite('./meinv2_resize.jpg', imageResize) #保留單一通道色彩,通道順序是BGR b = image.copy() b[:,:,1] = 0 b[:,:,2] = 0 cv2.imshow('Blue image', b) cv2.imwrite('./meinv2_blue.jpg', b) g = image.copy() g[:,:,0] = 0 g[:,:,2] = 0 cv2.imshow('Green image', g) cv2.imwrite('./meinv2_green.jpg', g) r = image.copy() r[:,:,1] = 0 r[:,:,0] = 0 cv2.imshow('Red image', r) cv2.imwrite('./meinv2_red.jpg', r) #改變對比度和亮度 #公式 # result = ori*alpha + beta #ndarray是直接支援乘法和加法操作的,但是要注意 #乘加後的結果必須在[0,255]範圍內,所以稍做一下處理 alpha = 2 beta = -200 # result1 = image*2 - 200 #直接這麼處理會有問題,會不在範圍 p = [] for i in xrange(256): p.append(max(min(round(alpha*i + beta), 255), 0)) parray = np.array(p, np.uint8) result = parray[image] cv2.imshow('Change contrast and brightness', result) cv2.imwrite('./meinv2_contrast_brightness.jpg', result) #顯示文字 #字型:FONT_HERSHEY_COMPLEX imageText = image.copy() cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_COMPLEX, 4, (255, 0 ,0), thickness = 4, lineType = 8) cv2.imshow('Show text FONT_HERSHEY_COMPLEX', imageText) cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_COMPLEX' + '.jpg', imageText) #字型:FONT_HERSHEY_COMPLEX_SMALL imageText = image.copy() cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_COMPLEX_SMALL, 4, (255, 0 ,0), thickness = 4, lineType = 8) cv2.imshow('Show text FONT_HERSHEY_COMPLEX_SMALL', imageText) cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_COMPLEX_SMALL' + '.jpg', imageText) #字型:FONT_HERSHEY_DUPLEX imageText = image.copy() cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_DUPLEX, 4, (255, 0 ,0), thickness = 4, lineType = 8) cv2.imshow('Show text FONT_HERSHEY_DUPLEX', imageText) cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_DUPLEX' + '.jpg', imageText) #字型:FONT_HERSHEY_PLAIN imageText = image.copy() cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_PLAIN, 4, (255, 0 ,0), thickness = 4, lineType = 8) cv2.imshow('Show text FONT_HERSHEY_PLAIN', imageText) cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_PLAIN' + '.jpg', imageText) #字型:FONT_HERSHEY_SCRIPT_COMPLEX imageText = image.copy() cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_SCRIPT_COMPLEX, 4, (255, 0 ,0), thickness = 4, lineType = 8) cv2.imshow('Show text FONT_HERSHEY_SCRIPT_COMPLEX', imageText) cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_SCRIPT_COMPLEX' + '.jpg', imageText) #字型:FONT_HERSHEY_SCRIPT_SIMPLEX imageText = image.copy() cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_SCRIPT_SIMPLEX, 4, (255, 0 ,0), thickness = 4, lineType = 8) cv2.imshow('Show text FONT_HERSHEY_SCRIPT_SIMPLEX', imageText) cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_SCRIPT_SIMPLEX' + '.jpg', imageText) #字型:FONT_HERSHEY_SIMPLEX imageText = image.copy() cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_SIMPLEX, 4, (255, 0 ,0), thickness = 4, lineType = 8) cv2.imshow('Show text FONT_HERSHEY_SIMPLEX', imageText) cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_SIMPLEX' + '.jpg', imageText) #字型:FONT_HERSHEY_TRIPLEX imageText = image.copy() cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_TRIPLEX, 4, (255, 0 ,0), thickness = 4, lineType = 8) cv2.imshow('Show text FONT_HERSHEY_TRIPLEX', imageText) cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_TRIPLEX' + '.jpg', imageText) #字型:FONT_ITALIC imageText = image.copy() cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_ITALIC, 4, (255, 0 ,0), thickness = 4, lineType = 8) cv2.imshow('Show text FONT_ITALIC', imageText) cv2.imwrite('./meinv2_text_' + 'FONT_ITALIC' + '.jpg', imageText) #退出視窗 cv2.waitKey(0) cv2.destroyAllWindows()
執行結果截圖: