我有以下图片:
我想使用cv::inRange方法和HSV颜色空间检测红色矩形.
int H_MIN = 0;
int H_MAX = 10;
int S_MIN = 70;
int S_MAX = 255;
int V_MIN = 50;
int V_MAX = 255;
cv::cvtColor( input, imageHSV, cv::COLOR_BGR2HSV );
cv::inRange( imageHSV, cv::Scalar( H_MIN, S_MIN, V_MIN ), cv::Scalar( H_MAX, S_MAX, V_MAX ), imgThreshold0 );
Run Code Online (Sandbox Code Playgroud)
我已经创建了动态轨迹栏以便更改HSV的值,但是我无法获得所需的结果.
是否有关于使用最佳值(也许是过滤器)的建议?
我只是想从自然环境中捕获的图像中仅检测绿色物体.如何定义它?因为在这里我要通过阈值让我们说'x',通过使用这个x我想只获得一种颜色的绿色对象(白色)其他必须出现在另一种颜色(黑色)请指导我做这个.提前致谢.
如何使用 opencv 在 python 中跟踪黄色对象?如果可能的话,我怎样才能获得物体的位置?
我尝试过使用以下方法,但我不知道如何降低和提高范围。
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while True:
screen = np.array(ImageGrab.grab())
ret, img = cap.read()
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
#Help
lower = np.array([])
upper = np.array([])
mask = cv2.inRange(hsv, lower, upper)
cv2.imshow('screen', mask)
if cv2.waitKey(25) & 0xFF == ord('q'):
cv2.destroyAllWindows()
break
Run Code Online (Sandbox Code Playgroud)
它应该找到黄色物体并可能找到它们的位置。
使用此答案创建分段程序,它会错误地计算对象.我注意到单独的物体被忽略或者成像采集不佳.
我计算了123个对象,程序返回117,如下所示.用红色圈出的物体似乎丢失了:
使用720p网络摄像头中的以下图像:
import cv2
import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import label
import urllib.request
# https://stackoverflow.com/a/14617359/7690982
def segment_on_dt(a, img):
border = cv2.dilate(img, None, iterations=5)
border = border - cv2.erode(border, None)
dt = cv2.distanceTransform(img, cv2.DIST_L2, 3)
plt.imshow(dt)
plt.show()
dt = ((dt - dt.min()) / (dt.max() - dt.min()) * 255).astype(np.uint8)
_, dt = cv2.threshold(dt, 140, 255, cv2.THRESH_BINARY)
lbl, ncc = label(dt)
lbl = lbl * (255 / (ncc + 1))
# Completing the …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) 我们可以如下定义 HSV 中红色的范围。我想检测某个像素是否是红色的?我怎样才能在Python中做到这一点?我花了一整天,但无法找到解决方案。请解决我的问题。我对 Python 很陌生。我正在使用的代码是:
img=cv2.imread("img.png")
img_hsv=cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# lower mask (0-10)
lower_red = np.array([0,50,50])
upper_red = np.array([10,255,255])
mask0 = cv2.inRange(img_hsv, lower_red, upper_red)
# upper mask (170-180)
lower_red = np.array([170,50,50])
upper_red = np.array([180,255,255])
mask1 = cv2.inRange(img_hsv, lower_red, upper_red)
image_height,image_width,_=img.shape
for i in range(image_height):
for j in range(image_width):
if img_hsv[i][j][1]>=lower_red and img_hsv[i][j][1]<=upper_red:
print("Found red")
Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个我检测到红色的程序.但是有时它比平时更暗,所以我不能只使用一个值.什么是检测不同色调红色的好范围?我目前使用的范围是128,0,0 - 255,60,60,但有时它甚至都没有检测到我放在它前面的红色物体.
我需要一个合适的颜色空间来检测与红色和黄色非常相似的颜色之上的橙色。我已经尝试了一些颜色空间:RGB HSV & YUV 但我想检测的对象改变了它的位置,这意味着环境光会发生变化随着时间的推移,这是我的主要问题。