1. 基于opencv的c++编程问题。怎么将视频中的物体框选出来,再根据大小进行分割输出即选出需要大
我靠很早以前我此备大玩过opencv,英特尔森竖支持的一个开源图形库。里面有好滚让多demo的,我记得有一个关于模式识别的demo,里面有关于画线切割的代码
2. 如何从入门开始学习OpenCV
如何从入门开始学习OpenCV
OpenCV只是个lib,它既不是软件、也不是编程语言,所以我觉得从头到尾按照教程来看一遍可能会存在学习枯燥、无的放矢的局面。
最好的方法是带着问题去学,先从最简单的地方入手,比如调用OpenCV的GUI界面来调节一幅图像的灰度,再复杂些可以利用鼠标交互来实现PS的魔棒效果(分水岭算法)等等,这些网上都有很多现成的代码来学习,OpenCV 中文论坛上也有不少大牛来回答问题。
单纯的学习OpenCV的人不多,学习OpenCV只是为了更方便的编程,所以某种角度来看
OpenCV只是把锋利的快刀,用刀本身不是目的,用刀切出有型的菜才是目的。
如果没有编程语言的要求,建议从Python 2.7 +OpenCV 2.4X 入手,为解决问题而思考,有种用Matlab的畅快感。
《Learning OpenCV》是本好书,可以在入门后作为工具书查阅。
3. opencv编程显示图像, “cvLoadImage”: 用于调用的参数太少,该怎么改
OpenCV
整个项目的结构图:
编写DetectFaceDemo.java,代码如下:
[java] view
plainprint?
package com.njupt.zhb.test;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.highgui.Highgui;
import org.opencv.objdetect.CascadeClassifier;
//
// Detects faces in an image, draws boxes around them, and writes the results
// to "faceDetection.png".
//
public class DetectFaceDemo {
public void run() {
System.out.println("\nRunning DetectFaceDemo");
System.out.println(getClass().getResource("lbpcascade_frontalface.xml").getPath());
// Create a face detector from the cascade file in the resources
// directory.
//CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("lbpcascade_frontalface.xml").getPath());
/芦稿/Mat image = Highgui.imread(getClass().getResource("lena.png").getPath());
//注意:源程陪拍孝序的贺竖路径会多打印一个‘/’,因此总是出现如下错误
/*
* Detected 0 faces Writing faceDetection.png libpng warning: Image
* width is zero in IHDR libpng warning: Image height is zero in IHDR
* libpng error: Invalid IHDR data
*/
//因此,我们将第一个字符去掉
String xmlfilePath=getClass().getResource("lbpcascade_frontalface.xml").getPath().substring(1);
CascadeClassifier faceDetector = new CascadeClassifier(xmlfilePath);
Mat image = Highgui.imread(getClass().getResource("we.jpg").getPath().substring(1));
// Detect faces in the image.
// MatOfRect is a special container class for Rect.
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(image, faceDetections);
System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));
// Draw a bounding box around each face.
for (Rect rect : faceDetections.toArray()) {
Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
}
// Save the visualized detection.
String filename = "faceDetection.png";
System.out.println(String.format("Writing %s", filename));
Highgui.imwrite(filename, image);
}
}
package com.njupt.zhb.test;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.highgui.Highgui;
import org.opencv.objdetect.CascadeClassifier;
//
// Detects faces in an image, draws boxes around them, and writes the results
// to "faceDetection.png".
//
public class DetectFaceDemo {
public void run() {
System.out.println("\nRunning DetectFaceDemo");
System.out.println(getClass().getResource("lbpcascade_frontalface.xml").getPath());
// Create a face detector from the cascade file in the resources
// directory.
//CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("lbpcascade_frontalface.xml").getPath());
//Mat image = Highgui.imread(getClass().getResource("lena.png").getPath());
//注意:源程序的路径会多打印一个‘/’,因此总是出现如下错误
/*
* Detected 0 faces Writing faceDetection.png libpng warning: Image
* width is zero in IHDR libpng warning: Image height is zero in IHDR
* libpng error: Invalid IHDR data
*/
//因此,我们将第一个字符去掉
String xmlfilePath=getClass().getResource("lbpcascade_frontalface.xml").getPath().substring(1);
CascadeClassifier faceDetector = new CascadeClassifier(xmlfilePath);
Mat image = Highgui.imread(getClass().getResource("we.jpg").getPath().substring(1));
// Detect faces in the image.
// MatOfRect is a special container class for Rect.
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(image, faceDetections);
System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));
// Draw a bounding box around each face.
for (Rect rect : faceDetections.toArray()) {
Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
}
// Save the visualized detection.
String filename = "faceDetection.png";
System.out.println(String.format("Writing %s", filename));
Highgui.imwrite(filename, image);
}
}
3.编写测试类:
[java] view
plainprint?
package com.njupt.zhb.test;
public class TestMain {
public static void main(String[] args) {
System.out.println("Hello, OpenCV");
// Load the native library.
System.loadLibrary("opencv_java246");
new DetectFaceDemo().run();
}
}
//运行结果:
//Hello, OpenCV
//
//Running DetectFaceDemo
///E:/eclipse_Jee/workspace/JavaOpenCV246/bin/com/njupt/zhb/test/lbpcascade_frontalface.xml
//Detected 8 faces
//Writing faceDetection.png
package com.njupt.zhb.test;
public class TestMain {
public static void main(String[] args) {
System.out.println("Hello, OpenCV");
// Load the native library.
System.loadLibrary("opencv_java246");
new DetectFaceDemo().run();
}
}
//运行结果:
//Hello, OpenCV
//
//Running DetectFaceDemo
///E:/eclipse_Jee/workspace/JavaOpenCV246/bin/com/njupt/zhb/test/lbpcascade_frontalface.xml
//Detected 8 faces
//Writing faceDetection.png
4. opencv图像处理编程实例怎么样
最重要的就是理论和实践并重。尽量对一些基础的图昌毕丛像处理操作,都自己用程序写一遍,跑一遍。尽量多试错。刚开始的时候犯错并改正就是最好的学习方式。有一些资料推荐你可以看看,首推毛星云的CSDN博客系列和他的书耐樱《opencv3编程入门》。如果英文比数好较好的话,官方教程也非常好。在国内改有很多opencv方面的教程和博客,多用搜索工具。最后说一句,还是要多动手去写程序。
5. OPENCV库,编程使用OPENCV读取tif格式的影像时,想要读取一个位深depth为16的图像,获取它的灰度值。
IplImage* cvLoadImage( const char* filename, int flags=CV_LOAD_IMAGE_COLOR );
其中flag选中CV_LOAD_IMAGE_ANYDEPTH,则输入图像格伏咐野式可以为8位无符号,16位无符号,32位有符缺喊号简脊或者32位浮点型
6. 急求opencv编程 :读取图像RGB值并保存在一位数组中
s=cvGet2D(img,i,j);//访问RGB图裤梁像img图像的i行j列元素
B G R的值分别为s.val[0] s.val[1] s.val[2]
再分别赋胡清运正蠢值给数组就ok
7. opencv编程中求近似两条平行线的中线,但老是出现内存出错的情况,特求助于大侠了
1 hough变团团换获取直线,可以得到两条直森核线首尾两点坐标
2 根据坐标计算直线斜率,然后推算中轴线斜率此或掘
3 根据直线坐标计算它们的交点,然后有了交点和中轴线斜率,就出来结果了。
8. 《OpenCV实例精解OpenCVByExample》pdf下载在线阅读,求百度网盘云资源
《OpenCV实例精解》([美] 普拉蒂克·乔希)电子书网盘下载免拍明费在线阅读
资源链接:
链接: https://pan..com/s/11MQ4MzQM9HVfo2pl28cGsw
书名:OpenCV实例精解
作者:[美] 普拉蒂克·乔希
译者:呆萌院长
出版社:机械工业出版社
出版年份:2016-8-1
页数:212
内容简介唯贺慎:
OpenCV是一个开源的计算机视觉库,在计算机视觉的开发中扮演着重要的角色。它为计算机视觉应用开发提供了灵活、功能强大的开发接口,使其成为计算机视觉专业人员所依赖的重要开发工具。
本书首先介绍计算机视觉中的各个领域和在C++中相关的OpenCV功能。每个章节都包含真实世界的例子和示例代码,可以帮助你轻松地掌握主题,并了解它们在现实生活中的应用。全书自始至终都在力争使用简洁的语言、清晰的格式以及实践性很强的示例项目来教你如何在C++中使用OpenCV,并建立各种应用程序。
无论你是对计算机视觉一无所知,还是对此已有基本的了解,本书都将通过一些真实世界的例子和项目来引导你理解OpenCV的概念和算法。
作者简介:
Prateek Joshi 计算机视觉专家,曾任职于NVIDIA、微软、高通等公司,其研究方向为基于内容的分析和深度学习。他在计算机视觉领域已经斩获多个专利指敬,也赢得过很多关于图像识别技术的编程比赛。他还是《OpenCV with Python By Example》一书的作者。
David Millan Escriva; 有超过13年的IT工作经验和9年以上的计算机视觉领域从业经验,在不同的项目和初创企业工作过,并一直在工作中运用计算机视觉、光学字符识别、图像识别方面的知识。他是DamilesBlog (http://blog.damiles.com)的作者,还是《Mastering OpenCV with Practical Computer Vision Projects Book》一书的合着者。
Vinicius GodoyPUCPR的计算机图形学教授、Blackmuppet公司的联合创始人。他感兴趣的领域包括图像处理、设计模式和多线程应用程序。
9. VB.Net可以和OPENCV编程吗。做一些抓圆,抓直线的例子。有opencv的实例吗, 联系下!
可以OpenCV编程,不过网上样例实在是太少了,我建议使用Halcon,我现在就用这个,还是不错的
10. 怎么用OpenCV编程实现输出白色像素点的坐标值
同学,你这个标题和内容完全是两个问题了旁搜。光实现坐标值输出简单的很
p_iplImg=cvLoadImage(p_cImgName,1); //p_iplImg表示轮廓图
前提为二值图 ,不是二值图中间请加二值化
for (int i=0;i<p_iplImg->height;i++)
{
for (int j=0;j<p_iplImg->widthStep;j++)
{
if (p_iplImg->imageData[i*p_iplImg->widthStep+j] == 255)
{
cout << "坐标为 " << i << j <<endl;
}
}
}
想用这个轮廓把原来JPG彩色图像中的物体圈出来,并且把原图像背景变成白色
这个功能请参考
CvMemStorage *storage1 = cvCreateMemStorage(0);
CvSeq *contour1 = 0;
cvFindContours( p_iplDestImg, storage1, &contour1, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));//得到轮廓
cvDrawContours(p_iplDestImg, contour1, CV_RGB(255,255,255), CV_RGB(255,255,255), 2, CV_FILLED, 8, cvPoint(0,0));//在图像中圈出来
//把不在圈内的像素值配漏全部设为运卖历255就是白色