我有一个咖啡罐的图像,橙色的盖子位置,我想找到.就这个
.
gcolor2实用程序显示盖子中心的HSV为(22,59,100).问题是如何选择颜色的限制呢?我尝试了min =(18,40,90)和max =(27,255,255),但是出乎意料
这是Python代码:
import cv
in_image = 'kaffee.png'
out_image = 'kaffee_out.png'
out_image_thr = 'kaffee_thr.png'
ORANGE_MIN = cv.Scalar(18, 40, 90)
ORANGE_MAX = cv.Scalar(27, 255, 255)
COLOR_MIN = ORANGE_MIN
COLOR_MAX = ORANGE_MAX
def test1():
frame = cv.LoadImage(in_image)
frameHSV = cv.CreateImage(cv.GetSize(frame), 8, 3)
cv.CvtColor(frame, frameHSV, cv.CV_RGB2HSV)
frame_threshed = cv.CreateImage(cv.GetSize(frameHSV), 8, 1)
cv.InRangeS(frameHSV, COLOR_MIN, COLOR_MAX, frame_threshed)
cv.SaveImage(out_image_thr, frame_threshed)
if __name__ == '__main__':
test1()
Run Code Online (Sandbox Code Playgroud) 如何定义两种不同颜色的"下"和"上"范围,例如红色和蓝色(因为红色和蓝色在HSV颜色中彼此不相邻)
这个属于红色:
lower_red = np.array([160,20,70])
upper_red = np.array([190,255,255])
Run Code Online (Sandbox Code Playgroud)
这个属于蓝色:
lower_blue = np.array([101,50,38])
upper_blue = np.array([110,255,255])
Run Code Online (Sandbox Code Playgroud)
我尝试使用if条件将它们组合起来或制作自己的功能但不起作用,你们能告诉我解决方案吗?
P/s:Python中的OpenCV
正如您所看到的,图像中有一些嘈杂的绿色轮廓。这是迄今为止我使用 OpenCV 和 Python 的最新输出。我还是个初学者,所以我需要你的帮助。
假设我要创建一个全新的脚本并提供该图像并“清理”图像,我将如何做?
我正在尝试使用 cv2 模块从定义的 RGB 范围内的图像中提取特定颜色。在下面的示例中,我试图将火焰与黄色和白色 RGB 值之间的航天飞机排气隔离,然后打印出该范围内与图像其余部分相比的 RGB 值百分比。
这是我的最小工作示例:
import cv2
import numpy as np
from matplotlib import pyplot as plt
import imageio
img = imageio.imread(r"shuttle.jpg")
plt.imshow(img)
Run Code Online (Sandbox Code Playgroud)
这是输出图像。它来自维基百科。
img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
color1 = (255,255,0) #yellow
color2 = (255,255,255) #white
boundaries = [([color1[0], color1[1], color1[2]], [color2[0], color2[1], color2[2]])]
for (lower, upper) in boundaries:
lower = np.array(lower, dtype=np.uint8)
upper = np.array(upper, dtype=np.uint8)
mask = cv2.inRange(img, lower, upper)
output = cv2.bitwise_and(img, img, mask=mask)
ratio = cv2.countNonZero(mask)/(img.size/3)
print('pixel percentage:', np.round(ratio*100, 2)) …Run Code Online (Sandbox Code Playgroud) 目前我正在制作一个用户将检测绿色的应用程序.我用这张照片进行测试:

我的问题是我无法检测到任何绿色像素.在我使用蓝色之前,一切都很好.现在我无法检测到任何东西,虽然我尝试了不同的组合RGB.我想知道绿色或我的检测范围是否有问题,所以我用油漆制作了一个图像(0, 255, 0)并且它有效.为什么它看不到这个圈子呢?我使用此代码进行检测:
Core.inRange(hsv_image, new Scalar([I change this value]), new Scalar(60, 255, 255), ultimate_blue);
Run Code Online (Sandbox Code Playgroud)
可能是我设置了错误的Range,但我使用Photoshop获取绿色像素之一的颜色并将其转换RGB为HSV.但它不起作用.它甚至没有检测到我采样的像素.怎么了?提前致谢.
使用Miki的答案:
我编写了下面的代码来检测图像中的 3D 形状,并且它工作正常。
现在我需要检测形状内的颜色并计算它们。
谁能指出我应该从哪里开始进行颜色检测?
下面的形状检测代码,也许会有用:
import cv2
import numpy as np
cv2.imshow('Original Image',rawImage)
cv2.waitKey(0)
hsv = cv2.cvtColor(rawImage, cv2.COLOR_BGR2HSV)
cv2.imshow('HSV Image',hsv)
cv2.waitKey(0)
hue ,saturation ,value = cv2.split(hsv)
cv2.imshow('Saturation Image',saturation)
cv2.waitKey(0)
retval, thresholded = cv2.threshold(saturation, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
cv2.imshow('Thresholded Image',thresholded)
cv2.waitKey(0)
medianFiltered = cv2.medianBlur(thresholded,5)
cv2.imshow('Median Filtered Image',medianFiltered)
cv2.waitKey(0)
cnts, hierarchy = cv2.findContours(medianFiltered, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for c in cnts:
# compute the center of the contour
M = cv2.moments(c)
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
first …Run Code Online (Sandbox Code Playgroud) 我想确定此(静态视频)图像中注射器尖端的中心位置。尖端名义上是圆形的并且具有已知的尺寸和数量。
我目前正在笔尖上涂上红色墨水,以便更容易检测到它们。如果不必这样做就好了,但我认为如果没有它,检测将会非常困难。有人喜欢挑战吗?
我开始尝试 SimpleBlobDetector,因为它有一些很好的过滤功能。我无法弄清楚的一件事是如何让 SimpleBlobDetector 检测空心圆(环)?
然后我尝试了canny + hough,但圆检测太不稳定,位置跳来跳去。
我目前正在使用 findContours + minEnendingCircle ,它工作正常,但仍然很不稳定。面具看起来像这样。结果。 可以看到准确率不是很高:
我简单地查看了 RANSAC,但找不到可以检测多个圆的 Python 示例,而且边缘检测很棘手。
我当前的代码:
# /sf/ask/2276609261/
frame_inv = ~frame0
# Convert BGR to HSV
hsv = cv2.cvtColor(frame_inv, cv2.COLOR_BGR2HSV)
blur = cv2.GaussianBlur(hsv, (5, 5), 0)
# define range of color in HSV
lower_red = np.array([90 - 10, 70, 50])
upper_red = np.array([90 + 10, 255, 255])
# Threshold the HSV image to get only red colors
mask = cv2.inRange(hsv, …Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,以识别某些斑点的颜色为起点,为此,我正在绘制带有这些图像RGB颜色的3D图形。由此,我确定了这些斑点的一些醒目的颜色,如下所示。
颜色是理解的主观性和解释性的问题。此步骤的目的是进行识别,以便您可以找到颜色的图案而不会造成差异。因此,我一直在互联网上搜索,为此,建议使用颜色空间L * a * b *。
有了这个,有人可以帮我获得带有LAB颜色的图表,还是指出另一种更好地对这些斑点的颜色进行分类的方法?
用于绘制3D图形的代码
import numpy as np
import mpl_toolkits.mplot3d.axes3d as p3
import matplotlib.pyplot as plt
import colorsys
from PIL import Image
# (1) Import the file to be analyzed!
img_file = Image.open("IMD405.png")
img = img_file.load()
# (2) Get image width & height in pixels
[xs, ys] = img_file.size
max_intensity = 100
hues = {}
# (3) Examine each pixel in the image file
for x in xrange(0, xs):
for y in xrange(0, …Run Code Online (Sandbox Code Playgroud) 我有一些发票图片有一些文字重叠,这给以后的处理带来了一些麻烦,而且我只有黑色的文字。有些我想删除其他颜色的文本。
有没有办法实现这一目标?
附上图片作为示例。
我试图用opencv解决它,但我仍然无法解决这个问题:
import numpy as np import cv2
img = cv2.imread('11.png')
lower = np.array([150,150,150])
upper = np.array([200,200,200])
mask = cv2.inRange(img, lower, upper)
res = cv2.bitwise_and(img, img, mask=mask)
cv2.imwrite('22.png',res)
Run Code Online (Sandbox Code Playgroud)
[多色图像][1]