推荐的参数是什么CascadeClassifier::detectMultiScale(),取决于我应该更改默认参数的因素?
void CascadeClassifier::detectMultiScale(
const Mat& image,
vector<Rect>& objects,
double scaleFactor=1.1,
int minNeighbors=3,
int flags=0,
Size minSize=Size(),
Size maxSize=Size() )
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用两种不同的级联分类器来识别两个不同的对象.我修改了面部识别样本,但我遇到了一个问题:当我尝试识别来自object1.xml的对象时,它会打印两个矩形,当我尝试识别来自object2.xml的对象时,它不打印不对...
问题出在哪儿??
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
// Load native library after(!) OpenCV initialization
System.loadLibrary("detection_based_tracker");
try {
// load cascade file from application resources
InputStream is = getResources().openRawResource(R.raw.object1);
File cascadeDir = getDir("cascade", Context.MODE_PRIVATE);
mCascadeFile = new File(cascadeDir, "object1.xml");
FileOutputStream os = new FileOutputStream(mCascadeFile);
/* By me */
InputStream is2 = getResources().openRawResource(R.raw.object2);
mCascadeFile2 = new File(cascadeDir, "object2.xml");
FileOutputStream os2 = new FileOutputStream(mCascadeFile2);
byte[] …Run Code Online (Sandbox Code Playgroud) opencv object-detection object-recognition cascade-classifier
我试图用openCV检测图像中的嘴,所以我使用以下代码:
#include "face_detection.h"
using namespace cv;
// Function detectAndDisplay
void detectAndDisplay(const std::string& file_name, cv::CascadeClassifier& face_cascade, cv::CascadeClassifier& mouth_cascade)
{
Mat frame = imread(file_name);
std::vector<Rect> faces;
Mat frame_gray;
Mat crop;
Mat res;
Mat gray;
cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
equalizeHist(frame_gray, frame_gray);
// Detect faces
face_cascade.detectMultiScale(frame_gray, faces, 1.1, 3, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));
for(unsigned int i=0;i<faces.size();i++)
{
rectangle(frame,faces[i],Scalar(255,0,0),1,8,0);
Mat face = frame(faces[i]);
cvtColor(face,face,CV_BGR2GRAY);
std::vector <Rect> mouthi;
mouth_cascade.detectMultiScale(face, mouthi);
for(unsigned int k=0;k<mouthi.size();k++)
{
Point pt1(mouthi[k].x+faces[i].x , mouthi[k].y+faces[i].y);
Point pt2(pt1.x+mouthi[k].width, pt1.y+mouthi[k].height);
rectangle(frame, pt1,pt2,Scalar(0,255,0),1,8,0);
}
}
imshow("Frame", …Run Code Online (Sandbox Code Playgroud) 我有一个问题,我的猫被一只猫的猫欺负,以至于猫在夏天进入我们家,吃我们的猫食,睡在我们的家具里.
我的猫是灰色的,问题猫是棕色的.
我想在Linux机器上使用WiFi动作凸轮和OpenCV检测制作警报系统,但我不再做太多编码了.
所以我的问题是.这是使用标准OpenCV模块的一项微不足道的任务吗?
或者它需要大量的原始代码?
我知道有OpenCV级联分类器,但从未使用过它.
亲切的问候
雅各
我试着创建一个好的级联分类器几周,但似乎这个过程被神秘所包围.我有很多问题:
1)为什么opencv给我们这么少的信息?
2)它需要更多正面图像还是负面图像?
3)什么尺寸应该有正像?和负面形象?它们必须具有相同的尺寸?
4)如果我想创建一个分类为一个单一的路标是够像一个单一的正面形象,这与opencv_createsamples创建样?
5)创建一个在Android应用程序上使用的分类器是更好的哈尔或LBP?
6)正确的阶段数是多少?
7)minHitRate和maxFalseAlarmRate的正确值是什么?
android opencv object-detection object-recognition cascade-classifier
我正在使用OpenCV在Android上进行一些图像检测.我注意到如果试图将它拿到一个小物体上,那么OpenCV相机会非常模糊.有没有办法缩放相机和/或自定义焦点模式?我熟悉在常规的Android相机类上实现触摸焦点,但我不确定OpenCV的类有什么可能.我在网上找不到多少.
干杯,凯文
我需要一组样本图像来训练基于 Haar 的分类器进行车牌检测。我知道这个问题已经有人问过了,但是 googlecode 上的源代码已经死了。
http://tutorial-haartraining.googlecode.com/svn/trunk/data/negatives/
classification image-processing cascade-classifier haar-classifier
我正在尝试开发一个简单的应用程序来检测给定图像中的面部和眼睛:
from cv2 import *
face_cascade = CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = CascadeClassifier('haarcascade_eye.xml')
img = imread("123.jpg")
gray = cvtColor(img, COLOR_BGR2GRAY)
rows,cols = gray.shape
gray = getRotationMatrix2D((cols/2,rows/2),-90,1)
faces = face_cascade.detectMultiScale(gray, 1.3, 5, 0)
print faces
for (x,y,w,h) in faces:
img = rectangle(img, (x,y), ((x+w),(x+h)), (255,0,0), 2)
#gray = rectangle(gray, (x,y), ((x+w), (x+y)), (0, 255, 0), 4)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
eyes = eye_cascade.detectMultiScale(roi_grey)
for (ex,ey, ew, eh) in eyes:
roi_color = rectangle(roi_color, (x,y), ((x+w), (y+h)), (50, 50, 50), 3) …Run Code Online (Sandbox Code Playgroud) 当谈到级联分类器(使用haar like features)时,我总是会读到像AdaBoosting这样的方法用于选择"最佳"特征进行检测.但是,只有在有一些初始功能开始提升时,这才有效.
给定24x24像素图像,有162,336种可能的haar功能.我可能在这里错了,但我不认为像openCV这样的库最初会测试所有这些功能.
所以我的问题是如何选择初始功能或如何生成它们?有关最初功能数量的指南吗?
如果最初使用所有162,336个功能.它们是如何产生的?
machine-learning computer-vision cascade-classifier haar-classifier
我试图从教程中检测一些东西.培训完成后,将创建阶段文件和级联文件.我对算法有所了解,但我不知道这些文件中的信息含义.
<internalNodes>
0 -1 13569 2.8149113059043884e-003</internalNodes>
<leafValues>
9.8837211728096008e-002 -8.5897433757781982e-001</leafValues></_>
Run Code Online (Sandbox Code Playgroud)
和
<rects>
<_>
0 0 3 1 -1.</_>
<_>
1 0 1 1 3.</_></rects>
<tilted>0</tilted></_>
Run Code Online (Sandbox Code Playgroud)
这些价值观的含义是什么?