linux下用python進行opencv開發----簡單的圖片操作

初學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()

運行結果截圖:


發佈了53 篇原創文章 · 獲贊 12 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章