opencv学习笔记(二)
摘要:学习资料主要参考于毛星云主编《opencv3编程入门》
1、图像显示
#include<opencv2/opencv.hpp>
using namespace cv; //使用命名空间
void main(){
Mat srcImage = imread('1.jpg');//载入图像
imshow('图像标题',srcImage);//显示图像
waitKey(0);//等待按键按下
}
2、图像腐蚀
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage = imread("E:\\4.JPG");
imshow("原图--腐蚀操作", srcImage);
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat dsImage;
erode(srcImage, dsImage, element); //腐蚀函数
imshow("效果图", dsImage);
waitKey(0);
return 0;
}
3、图像模糊
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage = imread("E:\\4.JPG");
imshow("原图--腐蚀操作", srcImage);
Mat dsImage;
blur(srcImage, dsImage, Size(7, 7)); //进行滤波操作
imshow("效果图", dsImage);
waitKey(0);
return 0;
}
4、边缘检测
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat srcImage = imread("E:\\4.JPG");
imshow("原图--腐蚀操作", srcImage);
Mat dsImage,grayImage,edge;
//创建与原图同类型和大小的矩阵dst
dsImage.create(srcImage.size(), srcImage.type());
//将原图转化为灰度图像
cvtColor(srcImage, grayImage, CV_BGR2GRAY);
//使用3*3内核降噪
blur(grayImage, edge, Size(3, 3));
//运行canny算子
Canny(edge,edge,3,9,3);
imshow("效果图", edge);
waitKey(0);
return 0;
}
5、读取视频或调用摄像头
int main()
{
//初始化
VideoCapture capture("E://1.avi");
//调用摄像头
//VideoCapture capture(0);
//循环每一帧,相当一张图
while (1) {
Mat frame;
capture >> frame;//存储每一帧
imshow("视频", frame);
waitKey(50);//50ms
}
return 0;
}
6、写视频文件
int main() {
IplImage *iplImg = cvLoadImage("/home/huanglei/wr.jpg", 1);
IplImage *iplImgNew = cvCreateImage(cvSize(320,240),8,3) ; //改变图片大小适应视频
cvResize(iplImg,iplImgNew,CV_INTER_LINEAR) ;
CvVideoWriter* video = cvCreateVideoWriter("/home/huanglei/tree1.avi",
CV_FOURCC('P', 'I', 'M', '1'), 20,
cvSize(iplImgNew->width, iplImgNew->height), 1);
/*
* 逐帧读取视频,并保存到另外一个视频文件中
*/
CvCapture *cap;
cap = cvCreateFileCapture("/home/huanglei/tree.avi");
IplImage *imgVideo ;
int q ;
while (imgVideo = cvQueryFrame(cap)) {
q = cvWriteFrame(video, imgVideo);
}
/*
* 在新的视频文件的末尾插入图片
*/
int i;
for (int x = 0; x < 50; x++) {
i = cvWriteFrame(video, iplImgNew);
}
/*
* 释放指针
*/
if (video) {
cvReleaseVideoWriter(&video);
cvReleaseImage(&imgVideo);
cvReleaseImage(&imgVideo);
cvReleaseImage(&iplImg);
}
return 0;
}
opencv学习笔记(二)的更多相关文章
- OpenCV学习笔记二:OpenCV模块一览
注:本系列博客基于OpenCV 2.9.0.0 一,一览图: 二,模块: /* 基础库 */ 1,opencv_core(链接) ,opencv最基础的库.包含exception,point,rect ...
- 【opencv学习笔记二】opencv3.4.0组件结构说明
在学习opencv使用之前我们先来看一下opencv有哪些组件结构.至于OpenCV组件结构的研究方法, 我们不妨管中窥豹,通过opencv安装路径下include目录里面头文件的分类存放,来一窥Op ...
- OpenCV学习笔记二十:opencv_ts模块
一,简介: OpenCV测试库,用于单元测试.
- OpenCV学习笔记(二) - 写入视频、jpg格式
写入视频: import sys, os import cv2 imgDir = '/Users/xxx/salient/' videoName = 'vname' fps = 30 #帧频 outp ...
- opencv学习笔记二
1,读取照片(imread()) 2,处理照片(cvtcolor()) 3,命名窗口(namewindow()) 4,显示照片(imshow()) 5,保存照片(imwrite()) #include ...
- opencv学习笔记(二)寻找轮廓
opencv学习笔记(二)寻找轮廓 opencv中使用findContours函数来查找轮廓,这个函数的原型为: void findContours(InputOutputArray image, O ...
- opencv学习笔记(七)SVM+HOG
opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...
- opencv学习笔记(一)IplImage, CvMat, Mat 的关系
opencv学习笔记(一)IplImage, CvMat, Mat 的关系 opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,M ...
- OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...
- OpenCV 学习笔记 07 目标检测与识别
目标检测与识别是计算机视觉中最常见的挑战之一.属于高级主题. 本章节将扩展目标检测的概念,首先探讨人脸识别技术,然后将该技术应用到显示生活中的各种目标检测. 1 目标检测与识别技术 为了与OpenCV ...
随机推荐
- BSOJ 2423 -- 【PA2014】Final Zarowki
Description 有n个房间和n盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照亮. 你可以去附近的商店换新灯泡,商店里所有正整数功率的灯 ...
- NET Framework 各版本官方下载
https://msdn.microsoft.com/en-us/library/5a4x27ek(v=vs.110).aspx https://www.microsoft.com/zh-CN/dow ...
- 如何使用openscad绘制一个简单的键帽.
1 新建空项目 2测数据 测量得出数据.这个长方体的长宽高分别是1.6.4.6.8 注意,这三个数据并不是测量得到的数据,而且加了一点公差值(为3D打印做准备) 3画图 写代码 导入模型 为了方便以后 ...
- patch函数的解释2
patch 创建补片图形对象 句法: patch(X,Y,C) patch(X,Y,Z,C) patch(FV) patch(...'PropertyName',propertyvalue...) p ...
- jmeter(十六)配置元件之计数器
刚翻看了一下博客的草稿箱,发现很多未完成的草稿,拖了很久,趁着今天较空闲,就补上关于jmeter计数器这篇吧,拖延症,要不得啊... 先说说利用jmeter生成数据的几种方法: 1.CSV Data ...
- linux 修改内核参数 如何生效?
Linux 操作系统修改内核参数有3种方式: 修改 /etc/sysctl.conf 文件,加入配置选项,格式为 key = value ,修改保存后调用 sysctl -p 加载新配置使用 sysc ...
- WireShark抓包工具使用
WireShark是一款网络封包分析软件,它抓取网络封包,并尽可能显示出最详细的封包资料. wireshark的准备工作 安装wireshark sudo apt-get install wiresh ...
- WIFI底座
自己贴片的51+WIFI的开发板终于到了..还是贴片的好看 美中不足的是需要改一个电阻的阻值..还有就是由于自己的8266和51单片机一块断电上电,所以如果用的USB线的质量不好就会出现 下载不了程序 ...
- sprintf()函数用法
sprintf()用法见操作手册:http://www.php.net/sprintf 简单写下format的用法: 1. + - 符号,数字 2. 填充字符 默认是空格,可以是0.如果其他字符填充, ...
- mysql分表操作
一般分表操作有垂直拆分和水平拆分.顾名思义. 1. 垂直拆分是指,这个表的列,即字段,要拆分成两个或多个表. 这个应用场景比如:这个表字段,几个都是int.datetime等,有那么一个是text类 ...