2020-02-02 13:26:42
简单的学习了一段时间Opencv3.0,最近在做霍夫变换时经常出现问题,问题如下: 自己也百度、谷歌了很长时间,发现说的都不是很好,也不能解决问题。最后自己一点点调试,一点点验证最后成功的解决了问题。一、首先我的运行平台是win10+opencv3+vs2015+64位 之前在进行程序调试,在链接器的输入附加依赖项一直输入opencv_ts300.lib和opencv_world300.lib,...
2020-02-02 11:10:39
Canny算子的原理是比较复杂的,勇哥听了几遍都没搞明白。唉,还是先学会怎么用吧。演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int t1_value = 50;
int max_value = 255;...
2020-02-02 10:21:34
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst;
src = imread("e:/girl.pn...
2020-02-02 09:47:17
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst,dst2,dst3,dst4,dst5,dst6,dst7;...
2020-02-02 07:29:13
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst;
src = imread("e:/bobdert...
2020-02-01 22:09:14
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst,dst2,dst3,dst4,dst5,dst6;
src...
2020-02-01 20:43:18
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
Mat src, gray_src, dst;
int threshold_value = 127;
int threshold_max = 255;
int...
2020-02-01 19:03:43
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst;
src = imread("e:/5.png&q...
2020-02-01 18:08:07
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst,dst2,dst3,dst4;
src = imread(&...
2020-02-01 15:28:30
OpenCV的形状学算子morphologyEx,包括了常见的:开运算闭运算梯度顶帽黑帽等操作。演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {...
2020-02-01 14:47:06
膨胀与腐蚀是形态学操作中的一种,是比较有用的。在halcon机器视觉中也是常用操作。请看演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
Mat src, dst;
void CallBack_Demo(int...
2020-02-01 11:22:54
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst,dst1,dst2,dst3;
src = imread(&...
2020-01-31 19:26:37
绘制形状比较简单,基本上没啥子好说的,见代码。演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
Mat bgImage;
const char* drawdemo_win = "draw shapes and...
2020-01-31 19:01:29
演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst;
src = imread("e:/5.png&q...
2020-01-31 18:07:24
图像混合的原理理论-线性混合操作其中 a的取值范围为0~1之间对应的opencv算子是 addWeighted()参数1:输入图像Mat – src1参数2:输入图像src1的alpha值参数3:输入图像Mat – src2参数4:输入图像src2的alpha值参数5:gamma值参数6:输出混合图像注意点:两张图像的大小和类型必须一致才可以演示代码:#include <opencv2/op...
2020-01-31 17:42:19
学习sobel总结:先说下边缘,在图像上像素发生跃迁的的地方。如何捕捉边缘:对图像进行一阶求导,▲ = f(x)-f(x-1),▲的值越大,那么说明x方向边缘信号越强烈。 下图图我们可以看见像素值明显发生改变,表示这一现象可以用导数,变化率越大,说明像素值改变越显著f(x)为图像像素值的函数图,f'(t)为f(t)的一阶导数,即当前像素减去上一个像素的差值,可以看到红圈标注的地方,即边缘信...
2020-01-31 17:39:11
sobel算子是一种常用的边缘检测算子,是一阶的梯度算法。对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。当对精度要求不是很高时,是一种较为常用的边缘检测方法。它进行处理的模板如下:其中,Gx是横向的算子,Gy是纵向的算子。原图像记为f,则GX = Gx*fGY = Gy*fGx =-1*f(x-1, y-1) + 0*f(x,y-1) + 1*f(x+1,y-1)+(-2)*...
2020-01-31 17:13:00
1.图像基本运算图像的基本运算有很多种,比如两幅图像可以相加、相减、相乘、相除、位运算、平方根、对数、绝对值等;图像也可以放大、缩小、旋转,还可以截取其中的一部分作为ROI(感兴趣区域)进行操作,各个颜色通道还可以分别提取及对各个颜色通道进行各种运算操作。总之,对于图像可以进行的基本运算非常的多,只是挑了些常用的操作详解。void add(InputArray src1, InputArray s...
2020-01-31 05:40:17
利用Mat对象的像素数组指针来修改图片,是老司机玩的,新手的话可以采用一些安全访问的办法。见下面的代码。演示代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
using namespace std;
int main(...
2020-01-30 20:07:49
一、What is vector? vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.用法:1.文件包含: 首先在程序开头处加上#include<vector>以包含所需要的类文件vector,还有一定要加上using...
2020-01-30 09:52:57
1、C++OpenCV在C++中的版本号在<opencv2/core/version.hpp>里面,贴出部分和版本相关的定义// opencv2
#define CV_VERSION_EPOCH 2
#define CV_VERSION_MAJOR 4
#define CV_VERSION_MINOR 13
#define CV_VERSION_REVISIO...
2020-01-30 09:29:56
Mat对象介绍Mat对象是从OpenCV2.0引入的对象,处理的对象其实是二维像素数组。就像OpenCV官方教程中说的,下图中的车在CCD中看到的其实是一个二维的数组。Mat这个对象集成了一些操作这个数组数据的方法。最初的opencv版本中,和Mat功能相似的是数据结构 lIplImage。lIplImage是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构,
需要开发者自己分...
2020-01-29 13:32:09
勇哥的测试平台是vs2019+opencv3.1,下面的代码可用。功能是打开usb摄像头,并保存每帧图片。#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include<ios...
2020-01-29 11:11:05
下面的代码实现图像对比度的调整。效果见后面的图片。其实勇哥认为这个实现的是图片锐化效果,如果用photoshop来做对比,实现的就是锐化滤镜的效果。而photoshop的对比度效果与这个是是不同的。代码说明:(1)注释的代码用来操作图片中的像素。这也是数据类型Mat的一个功能。CV_Assert(myImage.depth() == CV_8U);
Mat.ptr<uchar>(...
2020-01-28 21:47:22
先上代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc, char** argv) {
Mat src, dst;
src = imread("e:/3.png&q...
2020-01-28 15:16:35
在官网 www.opencv.org 上下载 这是一个比较老的版本。本系列学习笔记使用的这个版本。下面是opencv的简单介绍。下面说明一下opencv加上vc++开发环境的配置。首先按下面的说明添加vc++的库,包含目录,依赖项。这里勇哥使用的是vs2019集成环境下的vc++。接下来用一段代码验证一下opencv开发环境是否搭建成功。#include <opencv2/opencv.h...
2019-12-06 11:21:01
任意的灰度图像可以被看做是地质学表面,高亮度的地方是山峰,低亮度的地方是山谷。给每个孤立的山谷(局部最小值)不同颜色的水(标签),当水涨起来,根据周围的山峰(梯度),不同的山谷也就是不同的颜色会开始合并,要避免这个,你可以在水要合并的地方建立障碍,直到所有山峰都被淹没。你所创建的障碍就是分割结果,这个就是分水岭的原理,但是这个方法会分割过度,因为有噪点,或者其他图像上的错误。所以OpenCV实现了...
2019-12-06 11:15:47
OTSU算法又叫最大类间方差阈值分割算法,也叫大津算法,是在1980年由日本的大津展之提出,是由最小二乘法推导而来,用于一些简单的阈值确定。对于一个灰度图,我们有时候非常想把他用一个阈值将他的前景和背景区分开来。我们可以合理的假设为如果将图像的像素分布图画出来,那么图像上应该有两个峰,即前景色和背景色。在这两个峰之间肯定有一个谷,那么我们就可以将阈值设在这里,从而对图像达到一个良好的分割效果。怎样...
2019-12-06 11:12:33
物体的凸包(Convex hull)用于理解物体的形状或轮廓。很多复杂物体的特性都能很好的被这种缺陷表现出来。 一组平面上的点,求一个包含所有点的最小的凸多边形,这就是凸包问题了。这可以形象地想成这样:在地上放置一些不可移动的木桩,用一根绳子把他们尽量紧地圈起来,这就是凸包了。凸包有什么应用?凸包在很多地方有着重要的应用,如手势识别,需要识别出手的轮廓的凸包,二维或者三维区域的边界的信息等。凸缺陷...
2019-12-06 11:09:22
查找轮廓什么是轮廓:一个轮廓是由图像中的一系列点组成的,也就是图像中的一条曲线。在OpenCV中一般用序列来存储轮廓信息。序列中的每个元素是曲线中每个点的位置。关于序列:序列是内存存储器中可以存储的一种对象,序列是某种结构的链表。下面是序列结构体:typedef sturct CvSeq{
int flags;
int header_size;
CvSeq * h_pr...