当前位置:   article > 正文

【Python+OpenCV之四】 ROI区域图像叠加&初级图像混合全剖析_roi=img[row-rows:rows,0:cols]

roi=img[row-rows:rows,0:cols]
  1. '''
  2. 【OpenCV入门教程之四】 ROI区域图像叠加&初级图像混合 全剖析
  3. 参考作者:浅墨_毛星云
  4. 一、设定感兴趣区域——ROI(region of interest)
  5. 在图像处理领域,我们常常需要设置感兴趣区域(ROI,region of interest),来专注或者简化我们的工作过程 。
  6. 也就是从图像中选择的一个图像区域,这个区域是我们图像分析所关注的重点。我们圈定这个区域,以便进行进一步处理。
  7. 而且,使用ROI指定我们想读入的目标,可以减少处理时间,增加精度,给图像处理来带不小的便利。
  8. '''
  9. import cv2
  10. import numpy as np
  11. img3 = cv2.imread("3.jpg")
  12. img4 = cv2.imread("4.jpg")
  13. # img3 = cv2.resize(img1,(int(img1.shape[1]/5.0), int(img1.shape[0]/5.0))) #原始图片太大,重新裁剪一下
  14. # img4 = cv2.resize(img4,(int(img4.shape[1]/2.5), int(img4.shape[0]/2.5))) #原始图片太大,重新裁剪一下
  15. #cv2.imwrite("3.jpg", img3)
  16. # cv2.imwrite("4.jpg", img4)
  17. #现在是img4比较小,想讲img4加到img3上去
  18. rows, cols, channels = img4.shape
  19. rows3, cols3, channels3 = img3.shape
  20. roi = img3[0:rows, 0:cols]
  21. img4gray = cv2.cvtColor(img4, cv2.COLOR_BGR2GRAY)
  22. ret,mask=cv2.threshold(img4gray,175,255,cv2.THRESH_BINARY)
  23. # cv2.imshow("mask:", mask)
  24. mask_inv = cv2.bitwise_not(mask) #把img4的区域取反,按位运算
  25. # cv2.imshow("mask_inv:", mask_inv)
  26. img3_bg = cv2.bitwise_and(roi, roi, mask=mask) #抠图区进行掩模保护,留下抠图图片
  27. cv2.imshow("img3_bg:", img3_bg)
  28. img4_fg = cv2.bitwise_and(img4,img4,mask=mask_inv)
  29. cv2.imshow("img4_fg:", img4_fg)
  30. dst = cv2.add(img3_bg,img4_fg)
  31. img3[rows3-rows-30:rows3-30, cols3-cols-30:cols3-30] =dst
  32. cv2.imshow("dst in img3:", img3)
  33. '''
  34. 二、初级图像混合——线性混合操作
  35. 我们通过在范围0到1之间改变alpha值,来对两幅图像或两段视频产生时间上的画面叠化(cross-dissolve)效果,就像幻灯片放映和电影制作中的那样。
  36. 即在幻灯片翻页时设置的前后页缓慢过渡叠加效果,以及电影情节过渡时经常出现的画面叠加效果。
  37. '''
  38. img5 = cv2.imread("1.jpg")
  39. h,w,_ = img3.shape
  40. imgnew = cv2.resize(img4, (w,h), interpolation=cv2.INTER_AREA) #两张图片需是大小相同的
  41. alpha = 0.5 #将两张图片叠加在一起第一张图片的权重
  42. beta = 1 - alpha #第二张图片的权重
  43. gamma = 0 #一个加到权重总和上的标量值,dst = src1*alpha+ src2*beta + gamma;
  44. img_add = cv2.addWeighted(img3, alpha, imgnew, beta, gamma)
  45. # cv2.imshow("img_add:", img_add)
  46. cv2.waitKey()
  47. cv2.destroyAllWindows()
  48. '''
  49. cv2.add()是将两张图片叠加在一起的,会挡住下面图片的某一部分的
  50. cv2.addWeighted是将两张图片进行融合
  51. '''

add操作的结果如下:

add_weighted结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/929296
推荐阅读
相关标签
  

闽ICP备14008679号