栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

检测颜色并从图像中删除该颜色

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

检测颜色并从图像中删除该颜色

由于文本和背景似乎有明显的阴影,因此在这里应使用颜色阈值。想法是将图像转换为HSV格式,然后使用上下阈值生成二进制分割的掩码,然后按位生成文本并提取文本。这是使用Python
OpenCV的实现


使用这个上下阈值,我们得到这个面具

lower = np.array([0, 120, 0])upper = np.array([179, 255, 255])

然后我们按位处理原始图像

最后我们阈值得到二进制图像,前景文本为黑色,背景为白色

import numpy as npimport cv2# Color thresholdimage = cv2.imread('1.png')original = image.copy()hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)lower = np.array([0, 120, 0])upper = np.array([179, 255, 255])mask = cv2.inRange(hsv, lower, upper)result = cv2.bitwise_and(original,original,mask=mask)result[mask==0] = (255,255,255)# Make text black and foreground whiteresult = cv2.cvtColor(result, cv2.COLOR_BGR2GRAY)result = cv2.threshold(result, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY)[1]cv2.imshow('mask', mask)cv2.imshow('result', result)cv2.waitKey()

您可以使用此HSV颜色阈值脚本来确定上下阈值

import cv2import sysimport numpy as npdef nothing(x):    pass# Load in imageimage = cv2.imread('1.png')# Create a windowcv2.namedWindow('image')# create trackbars for color changecv2.createTrackbar('HMin','image',0,179,nothing) # Hue is from 0-179 for Opencvcv2.createTrackbar('SMin','image',0,255,nothing)cv2.createTrackbar('VMin','image',0,255,nothing)cv2.createTrackbar('HMax','image',0,179,nothing)cv2.createTrackbar('SMax','image',0,255,nothing)cv2.createTrackbar('VMax','image',0,255,nothing)# Set default value for MAX HSV trackbars.cv2.setTrackbarPos('HMax', 'image', 179)cv2.setTrackbarPos('SMax', 'image', 255)cv2.setTrackbarPos('VMax', 'image', 255)# Initialize to check if HSV min/max value changeshMin = sMin = vMin = hMax = sMax = vMax = 0phMin = psMin = pvMin = phMax = psMax = pvMax = 0output = imagewait_time = 33while(1):    # get current positions of all trackbars    hMin = cv2.getTrackbarPos('HMin','image')    sMin = cv2.getTrackbarPos('SMin','image')    vMin = cv2.getTrackbarPos('VMin','image')    hMax = cv2.getTrackbarPos('HMax','image')    sMax = cv2.getTrackbarPos('SMax','image')    vMax = cv2.getTrackbarPos('VMax','image')    # Set minimum and max HSV values to display    lower = np.array([hMin, sMin, vMin])    upper = np.array([hMax, sMax, vMax])    # Create HSV Image and threshold into a range.    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)    mask = cv2.inRange(hsv, lower, upper)    output = cv2.bitwise_and(image,image, mask= mask)    # Print if there is a change in HSV value    if( (phMin != hMin) | (psMin != sMin) | (pvMin != vMin) | (phMax != hMax) | (psMax != sMax) | (pvMax != vMax) ):        print("(hMin = %d , sMin = %d, vMin = %d), (hMax = %d , sMax = %d, vMax = %d)" % (hMin , sMin , vMin, hMax, sMax , vMax))        phMin = hMin        psMin = sMin        pvMin = vMin        phMax = hMax        psMax = sMax        pvMax = vMax    # Display output image    cv2.imshow('image',output)    # Wait longer to prevent freeze for videos.    if cv2.waitKey(wait_time) & 0xFF == ord('q'):        breakcv2.destroyAllWindows()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455811.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号