我想从一个实时视频流中检测到一种特定的颜色,比如蓝色。我编写了下面的代码,它显示实时视频流,并将其转换为HSV和灰度。因为我对opencv完全陌生,所以我不知道下一步该做什么。
有人能帮我完成检测特定颜色的代码吗?
#include<opencv\cv.h>
#include<opencv\highgui.h>
using namespace cv;
int main(){
Mat image;
Mat gray;
Mat hsv;
VideoCapture cap;
cap.open(0);
namedWindow("window", CV_WI
我有以下镜像,使用某些OpenCV函数进行了预处理:
现在我正在尝试获取每种颜色的砖块数量(在本例中,每种颜色对应1块)。这些都是我有的颜色。
我的计划是遍历所有颜色,使用OpenCV函数"inRange“获得区域大小。我的问题是如何识别不同的颜色。我尝试了红色,并努力找到一个好的范围。在询问谷歌后,我明白了,我必须使用HSV颜色,以获得一个良好的范围与色调值。
所以我写了这段代码(出于某种原因用Java写的):
Mat img; //img is given from previos code
Mat hsv = img.clone();
Imgproc.cvtColor(
我目前正在从事一个包括颜色检测在内的项目。我在python上使用opencv这样做,我可以检测到我想要的颜色,即蓝色,但是我无法让软件知道这个颜色已经被检测到了。这是我的密码。
` hsv_frame =cv2.cvtColor(框架,cv2.COLOR_BGR2HSV)边界= [(94,90,45,145,255,255)]
# loop over the boundaries
for (lower, upper) in boundaries:
# create NumPy arrays from the boundaries
lower = np.array(lower,
需要注意的是,OpenCV的色调值范围是0 179 (如果声明不正确,请纠正我)。下面是我的函数,用于获取Mat图像的色调值: Mat MainWindow::getHue(const Mat &src)
{
Mat bgr32; //CV_32FC3
src.convertTo(bgr32,CV_32FC3,1/255.0);
Mat hsv(bgr32.size(), CV_32FC3);
cvtColor(bgr32,hsv, COLOR_BGR2HSV);
Mat hue(hsv.size(), CV_32FC1);
Mat
我在试着弄清楚一些颜色的界限。我使用GIMP来获取下限和上限。
从OpenCV文档中,我读到了下面的内容:
‘对于HSV,色调范围为0,179,饱和度范围为0,255,取值范围为0,255。不同的软件使用不同的比例。因此,如果您要将OpenCV值与它们进行比较,则需要对这些范围进行归一化。’
因此,我正在尝试将这些范围标准化,以便与GIMP进行比较。代码如下:
# z = (xi - min(x)) / (max(x) - min(x))
# where x=(x1,...,xn) and zi is now your i normalized data.
def norm_H_value
我编写了从文件中识别颜色的程序,并打印给定颜色的名称,其中文件的颜色具有最大的相似性。我用HSV得到颜色的范围,并将HSV与这个范围进行比较,得到最相似的颜色。我尝试遍历颜色字典,将它们与我传递的文件的HSV进行比较。然而,它不工作,并显示任何错误。
from pickletools import uint8
import cv2
from matplotlib import image
import numpy as np
#HSV Hue - color, Saturation - color density, Value - brightness of color.
#use lowe