相关疑难解决方法(0)

使用`cv :: inRange`(OpenCV)为颜色检测选择正确的上下HSV边界

我有一个咖啡罐的图像,橙色的盖子位置,我想找到.就这个图片.

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)

opencv hsv color-detection

67
推荐指数
7
解决办法
17万
查看次数

使用Python/PIL检测图像是彩色,灰度还是黑白

我以jpeg格式从PDF文件中提取页面图像,我需要确定每个图像是否更灰度,颜色是黑色和白色(具有容差因子).

我找到了一些方法来处理PIL(这里这里)的颜色检测,但我无法弄清楚如何回答这个简单的(视觉)问题:它是黑色和白色,彩色还是灰度图像?

我更喜欢使用Python和PIL这个部分,但如果有人有线索(或解决方案),我也可以使用OpenCV.

python opencv python-imaging-library python-2.7

9
推荐指数
3
解决办法
2万
查看次数

如何在Python-OpenCV中使用`cv2.inRange`检测两种不同的颜色?

如何定义两种不同颜色的"下"和"上"范围,例如红色和蓝色(因为红色和蓝色在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

python opencv

9
推荐指数
1
解决办法
2万
查看次数

使用 OpenCV/Python 从图像中删除绿色背景屏幕

所以我有下面这张图片: 在此输入图像描述

正如您所看到的,图像中有一些嘈杂的绿色轮廓。这是迄今为止我使用 OpenCV 和 Python 的最新输出。我还是个初学者,所以我需要你的帮助。

假设我要创建一个全新的脚本并提供该图像并“清理”图像,我将如何做?

编辑:这是原始图像: 在此输入图像描述

python opencv image-processing

7
推荐指数
3
解决办法
2万
查看次数

从 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)

opencv image-processing python-3.x cv2

7
推荐指数
1
解决办法
1万
查看次数

OpenCV Android绿色检测

目前我正在制作一个用户将检测绿色的应用程序.我用这张照片进行测试: 在此输入图像描述

我的问题是我无法检测到任何绿色像素.在我使用蓝色之前,一切都很好.现在我无法检测到任何东西,虽然我尝试了不同的组合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获取绿色像素之一的颜色并将其转换RGBHSV.但它不起作用.它甚至没有检测到我采样的像素.怎么了?提前致谢.

使用Miki的答案:

在此输入图像描述

android opencv colors hsv rgba

6
推荐指数
1
解决办法
2万
查看次数

如何检测检测到的形状 OpenCV 的颜色

我编写了下面的代码来检测图像中的 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)

python opencv colors object-detection color-detection

5
推荐指数
1
解决办法
9309
查看次数

如何用OpenCV Python准确检测空心圆(环)的位置?

我想确定此(静态视频)图像中注射器尖端的中心位置。尖端名义上是圆形的并且具有已知的尺寸和数量。

我目前正在笔尖上涂上红色墨水,以便更容易检测到它们。如果不必这样做就好了,但我认为如果没有它,检测将会非常困难。有人喜欢挑战吗?

我开始尝试 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)

python opencv image-processing

5
推荐指数
1
解决办法
931
查看次数

如何使用opencv创建LAB颜色图表?

我正在开发一个项目,以识别某些斑点的颜色为起点,为此,我正在绘制带有这些图像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)

python opencv graph image-processing

3
推荐指数
1
解决办法
631
查看次数

如何通过opencv和python仅保留图像中具有特定颜色的文本?

我有一些发票图片有一些文字重叠,这给以后的处理带来了一些麻烦,而且我只有黑色的文字。有些我想删除其他颜色的文本。

有没有办法实现这一目标?

附上图片作为示例。

我试图用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]

[1]:https : //i.stack.imgur.com/nWQrV.pngstrong文本

text opencv image colors

3
推荐指数
1
解决办法
7369
查看次数