OpenCV-Python提取图像中的ROI
1308 人阅读 | 时间:2021年12月17日 09:51
参考文章:
(1) cv.cvtColor(img, cv.COLOR_BGR2HSV)
(2) cv.inRange(hsv, (h_min, s_min, v_min), (h_max, s_max, v_max))
(3)cv.bitwise_and(img1, img2, mask),cv.bitwise_or(img1, img2, mask) 和cv.bitwise_not(img)
(4)cv.add(img1, img2) 函数
实操
代码如下
import cv2 as cv import numpy as np # 主要使用的函数: # cv.cvtColor(img, cv.COLOR_BGR2HSV) # cv.inRange(hsv, (h_min, s_min, v_min), (h_max, s_max, v_max)) # cv.bitwise_and(img1, img2, mask), cv.bitwise_or(img1, img2, mask), cv.bitwise_not(img) # cv.add(img1, img2) def cvshow(name, img): cv.imshow(name, img) cv.waitKey(0) cv.destroyAllWindows() # 输入原始图像 src = cv.imread('test1.png') cvshow('test1', src) # 图像降噪预处理 src = cv.GaussianBlur(src, (5, 5), 1) cvshow('gaussianblur', src) # 获取mask hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV) cvshow('hsv', hsv) mask = cv.inRange(hsv, (35, 43, 46), (99, 255, 255)) cvshow('mask', mask) mask = cv.bitwise_not(mask) cvshow('mask2', mask) # 获取人物 doctor = cv.bitwise_and(src, src, mask=mask) cvshow('doctor', doctor) # 新建一张与原始图一样大小的红色背景图 background = np.zeros(src.shape, src.dtype) background[:, :, 2] = 255 # 红色。background[:, :, 0]蓝色通道,background[:, :, 1]绿色通道 cvshow('background', background) # 得到红色背景的mask mask = cv.bitwise_not(mask) redback = cv.bitwise_and(background, background, mask=mask) cvshow('redback', redback) # 将人物图贴到红色背景上 dst = cv.add(redback, doctor) cvshow('dst', dst)
©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任
来源:ZhiKuGroup博客,欢迎分享。
评论专区
在这个版块混了这么久了,第一次看见这么给你的帖子!http://m.baishanct.com
这位作者的文笔极其出色,用词精准、贴切,能够形象地传达出他的思想和情感。http://mobile.snjunying.com
楼上的很有激情啊!http://www.hongshanhl.com
我默默的回帖,从不声张!http://www.783coin.com
世界末日我都挺过去了,看到楼主我才知道为什么上帝留我到现在!http://fch3.mandrake-covi.com
大神好强大!http://www.baishanct.com
楼主是一个神奇的青年!http://www.xwqrpmb.com
支持楼上的!http://es5y.bpkmd.com