我想从栏中读取字符/三角形。
首先,我将具有不同值的Otsu应用于此栏,但无法正确获取所有字符。我也尝试了三角形检测,但无法再次提取。角色的颜色各不相同。有人可以给出另一种方法/算法来提取它们吗?另外,有什么方法可以进行扫色,我的意思是尝试所有可能存在的颜色,然后提取(从黑白背景图像中提取所有颜色)?
ret,im1 = cv2.threshold(crop_img,0,255,cv2.THRESH_OTSU)
挑战,最后一个是最困难的
我获得的最好的失败了:
答案 0 :(得分:1)
使用分色可以最好地解决您的问题。您可以为此使用inrange()
函数(docs)。通常在HSV色彩空间中最好做到这一点。下面的代码显示了如何执行此操作。
您可以使用this script查找进行分色所需的值范围。它还具有示例图像,可以帮助您了解HSV的工作原理。
代码:
import numpy as np
import cv2
# load image
img = cv2.imread("image.png")
# Convert BGR to HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# define range of HSV-color
lower_val = np.array([0,50,80])
upper_val = np.array([179,255,255])
# purple only
#lower_val = np.array([140,50,80])
#upper_val = np.array([170,255,255])
# Threshold the HSV image to get a mask that holds the markings
mask = cv2.inRange(hsv, lower_val, upper_val)
# create an image of the markings with background excluded
img_masked = cv2.bitwise_and(img,img,mask=mask)
# display image
cv2.imshow("result", img_masked)
cv2.waitKey(0)
cv2.destroyAllWindows()