linux下用python生成图片,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()

运行结果截图:

3e6999e294e7329410f6a1f497ce8c13.png

f772c1ab97bd7492e052208f9a70edab.png

edc0e579de8609cba6ade75d58f41eee.png

9925d2f9997d1c8023a88b8e30118926.png

87268ff66b23d4f66205435ea75aa367.png

fe98fd7ea3568f0a5f5ac903b773b0fd.png

64be69598dc62fcd46b459beaf730537.png

629bb024d1a930b63f5f8ca2985cf8bb.png

7a6eb18ffe97bf40e7e05d46f323e331.png

3808124cfbf6c7afff7ce2dba98d46ef.png

e9eebfce795b6a882cbf51278ba1ba8a.png

ec4267835df9fe322b3e28cfa18be0fa.png

b01e6940f4d677b78adaa06ad855b1b2.png

3bc47a3d8073b7a14eaa9a61c9762b18.png

297e256c15e1ba0c824221c3853c603e.png

7d3ab8234aa2e23a80012d9933eed855.png

053fed5d9b092650b3f6f8c8769f82f4.png

8640f2f882447b717954a1df91dd3918.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值