python进行opencv开发----简单的图片操作

本文通过实例演示了如何使用Python和OpenCV库进行图像处理,包括裁剪、灰度转换、绘制矩形、调整大小、颜色通道分离及修改对比度和亮度等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[python]  view plain copy
  1. #!/usr/bin/python2  
  2. # coding: utf-8  
  3.   
  4. import cv2  
  5. import numpy as np  
  6.   
  7. #原始图片  
  8. image = cv2.imread('./meinv2_original.jpg', cv2.CV_LOAD_IMAGE_COLOR)  
  9. cv2.imshow('Original image', image)  
  10.   
  11. #截取图片的一部分,即ROI(region of interest)  
  12. #因为在python cv2中图片以ndarray格式表示,所以直接用ndarray的  
  13. #分片方式能非常容易的截取ROI,跟python中list的分片用法一样,只不过  
  14. #这个是在二维数组上分片  
  15. crop = image[0:201100:301#分片都是不包含后面一个参数的,所以多1  
  16. cv2.imshow('Crop image', crop)  
  17. cv2.imwrite('./meinv2_crop.jpg', crop)  
  18.   
  19. #处理过的灰度图片  
  20. gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  
  21. cv2.imshow('Gray image', gray)  
  22. cv2.imwrite('./meinv2_gray.jpg', gray)  
  23.   
  24. #在图片上画一个框  
  25. imageRect = image.copy()  
  26. p1 = (300200)  
  27. p2 = (500300)  
  28. color = (00255#BGR的顺序,这个颜色为红色  
  29. cv2.rectangle(imageRect, p1, p2, color)  
  30. cv2.imshow('Rectangle an image', imageRect)  
  31. cv2.imwrite('./meinv2_rect.jpg', imageRect)  
  32.   
  33. #图片缩放  
  34. size = (400300)  
  35. imageResize = cv2.resize(image, size)  
  36. #可以不指定缩放的图片大小,而指定缩放比例,如下,等比缩放到一半大小  
  37. #即将缩放尺寸设为0,然后再分别设定xy方向上的缩放比例  
  38. #imageResize = cv2.resize(image, (0,0), fx=0.5, fy=0.5)  
  39. cv2.imshow('Resize an image', imageResize)  
  40. cv2.imwrite('./meinv2_resize.jpg', imageResize)  
  41.   
  42. #保留单一通道色彩,通道顺序是BGR  
  43. b = image.copy()  
  44. b[:,:,1] = 0  
  45. b[:,:,2] = 0  
  46. cv2.imshow('Blue image', b)  
  47. cv2.imwrite('./meinv2_blue.jpg', b)  
  48.   
  49. g = image.copy()  
  50. g[:,:,0] = 0  
  51. g[:,:,2] = 0  
  52. cv2.imshow('Green image', g)  
  53. cv2.imwrite('./meinv2_green.jpg', g)  
  54.   
  55. r = image.copy()  
  56. r[:,:,1] = 0  
  57. r[:,:,0] = 0  
  58. cv2.imshow('Red image', r)  
  59. cv2.imwrite('./meinv2_red.jpg', r)  
  60.   
  61. #改变对比度和亮度  
  62. #公式  
  63. # result = ori*alpha + beta  
  64. #ndarray是直接支持乘法和加法操作的,但是要注意  
  65. #乘加后的结果必须在[0,255]范围内,所以稍做一下处理  
  66. alpha = 2  
  67. beta = -200  
  68. # result1 = image*2 - 200 #直接这么处理会有问题,会不在范围  
  69. p = []  
  70. for i in xrange(256):  
  71.     p.append(max(min(round(alpha*i + beta), 255), 0))  
  72. parray = np.array(p, np.uint8)  
  73. result = parray[image]  
  74. cv2.imshow('Change contrast and brightness', result)  
  75. cv2.imwrite('./meinv2_contrast_brightness.jpg', result)  
  76.   
  77. #显示文字  
  78. #字体:FONT_HERSHEY_COMPLEX  
  79. imageText = image.copy()  
  80. cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_COMPLEX, 4, (2550 ,0), thickness = 4, lineType = 8)  
  81. cv2.imshow('Show text FONT_HERSHEY_COMPLEX', imageText)  
  82. cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_COMPLEX' + '.jpg', imageText)  
  83.   
  84. #字体:FONT_HERSHEY_COMPLEX_SMALL  
  85. imageText = image.copy()  
  86. cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_COMPLEX_SMALL, 4, (2550 ,0), thickness = 4, lineType = 8)  
  87. cv2.imshow('Show text FONT_HERSHEY_COMPLEX_SMALL', imageText)  
  88. cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_COMPLEX_SMALL' + '.jpg', imageText)  
  89.   
  90. #字体:FONT_HERSHEY_DUPLEX  
  91. imageText = image.copy()  
  92. cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_DUPLEX, 4, (2550 ,0), thickness = 4, lineType = 8)  
  93. cv2.imshow('Show text FONT_HERSHEY_DUPLEX', imageText)  
  94. cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_DUPLEX' + '.jpg', imageText)  
  95.   
  96. #字体:FONT_HERSHEY_PLAIN  
  97. imageText = image.copy()  
  98. cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_PLAIN, 4, (2550 ,0), thickness = 4, lineType = 8)  
  99. cv2.imshow('Show text FONT_HERSHEY_PLAIN', imageText)  
  100. cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_PLAIN' + '.jpg', imageText)  
  101.   
  102. #字体:FONT_HERSHEY_SCRIPT_COMPLEX  
  103. imageText = image.copy()  
  104. cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_SCRIPT_COMPLEX, 4, (2550 ,0), thickness = 4, lineType = 8)  
  105. cv2.imshow('Show text FONT_HERSHEY_SCRIPT_COMPLEX', imageText)  
  106. cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_SCRIPT_COMPLEX' + '.jpg', imageText)  
  107.   
  108. #字体:FONT_HERSHEY_SCRIPT_SIMPLEX  
  109. imageText = image.copy()  
  110. cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_SCRIPT_SIMPLEX, 4, (2550 ,0), thickness = 4, lineType = 8)  
  111. cv2.imshow('Show text FONT_HERSHEY_SCRIPT_SIMPLEX', imageText)  
  112. cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_SCRIPT_SIMPLEX' + '.jpg', imageText)  
  113.   
  114. #字体:FONT_HERSHEY_SIMPLEX  
  115. imageText = image.copy()  
  116. cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_SIMPLEX, 4, (2550 ,0), thickness = 4, lineType = 8)  
  117. cv2.imshow('Show text FONT_HERSHEY_SIMPLEX', imageText)  
  118. cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_SIMPLEX' + '.jpg', imageText)  
  119.   
  120. #字体:FONT_HERSHEY_TRIPLEX  
  121. imageText = image.copy()  
  122. cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_HERSHEY_TRIPLEX, 4, (2550 ,0), thickness = 4, lineType = 8)  
  123. cv2.imshow('Show text FONT_HERSHEY_TRIPLEX', imageText)  
  124. cv2.imwrite('./meinv2_text_' + 'FONT_HERSHEY_TRIPLEX' + '.jpg', imageText)  
  125.   
  126. #字体:FONT_ITALIC  
  127. imageText = image.copy()  
  128. cv2.putText(imageText, 'cly', (imageText.shape[0]/2, imageText.shape[1]/3), cv2.FONT_ITALIC, 4, (2550 ,0), thickness = 4, lineType = 8)  
  129. cv2.imshow('Show text FONT_ITALIC', imageText)  
  130. cv2.imwrite('./meinv2_text_' + 'FONT_ITALIC' + '.jpg', imageText)  
  131.   
  132. #退出窗口  
  133. cv2.waitKey(0)  
  134. cv2.destroyAllWindows()  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值