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 ...
随机推荐
- BZOJ1023:[SHOI2008]cactus仙人掌图(圆方树,DP,单调队列)
Description 如果某个无向连通图的任意一条边至多只出现在一条简单回路(simple cycle)里,我们就称这张图为仙人掌图(cactus). 所谓简单回路就是指在图上不重复经过任何一个顶点 ...
- Redis String类型的API使用
package com.daxin.jedis_datastructure; import org.junit.After; import org.junit.Before; import org.j ...
- m100(2) 云台自动跟踪
大疆 210云台控制 https://developer.dji.com/onboard-sdk/documentation/sample-doc/advanced-sensing-target-tr ...
- Shell脚本开发过程中遇到的问题处理
1. 执行shell脚本报 Unsupported major.minor version 52.0 报错原因:java文件jdk和服务器上的jdk不匹配, 解决方法: a.查看当前服务器用的jdk ...
- 素数判断-----埃氏筛法&欧拉筛法
埃氏筛法 /* |埃式筛法| |快速筛选素数| |15-7-26| */ #include <iostream> #include <cstdio> using namespa ...
- Ubuntu最新的主要操作系统放弃32位支持?
导读 现在是2018年,2019年即将到来——64位处理器已经成为主流很长一段时间了.如果你仍然使用32位的电脑,那么是时候把它扔进垃圾箱了. 我为所有基于Linux的操作系统维护者感到自豪,他们有勇 ...
- <<linux device driver,third edition>> Chapter 3:Char Drivers
The Internal Representation of Device Numbers Within the kernel,the dev_t type(defined in linux/type ...
- ESP32 电容式触摸按键设计
手指和电容器接触时,相当于增加了电容,电容增加量与总电容的商就是电容的变化幅值,如果这个幅值超过门限,就认为触摸按键被激发了:
- Android学习之多触点滑动
知识点: 1.对矩阵:Matrix类熟悉,链接:https://blog.csdn.net/jdsjlzx/article/details/52741445 2.MotionEvent详解:https ...
- vue 动态加载组建
<component :is="comp1"></component> data () { return { comp1:'', } } require.e ...