![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
opencv
DF.W
这个作者很懒,什么都没留下…
展开
-
图像边界提取——canny算法
%利用canny算子提取边缘clc,clear% 读入图片rice_img = imread('rice.jpg');figure,imshow(rice_img);title('原始图像')[m,n] = size(rice_img);%%%对图像进行高斯平滑,选用的模板为3*3的模板% 生成高斯模板[x,y] = meshgrid([-3:3],[-3:3]);sigma = 0.5;h = exp(-(x.*x+y.*y)./(2*sigma^2))/(2*pi*sigma^2原创 2020-12-11 16:43:21 · 842 阅读 · 0 评论 -
如何利用matlab显示图像的方向矢量图
[X,Y] = meshgrid(1:256,1:256);[px,py] = gradient(rice_img_Gauss);quiver(X,Y,px,py)放大后的效果原创 2020-12-10 20:40:00 · 1183 阅读 · 0 评论 -
matlab图像处理:边界跟踪
设一幅二值图像中,只有一个白色区域,试给出求该区域外围轮廓线的方法(要求按顺时针的顺序给出各点的坐标,即行/列号)上面是题目的要求,提取图像的外边界轮廓和内边界轮廓,相对比较简单,但是困难的是这个按照顺时针或者逆时针把这个坐标输出,可能许老师就是想让我们用他讲解的ppt的方法,这里赞一波许向阳老师,确实讲解的很透彻!!!下面是实现的代码%边界跟踪并实现顺时针输出clear;clc;img = imread('hb.png');% 对图像进行二值化操作img = rgb2gray(img.原创 2020-10-27 16:51:37 · 4194 阅读 · 3 评论 -
matlab实现K-means聚类
clear;clc;% 随机生成二维数据点n_max = 10;n = 0;point_data = rand(2,100)*200;% 绘制原始点的分布 K = 3;% 随机生成了K个中心点center = rand(2,3)*200;while n<n_max% 计算距离,进行分类 h1 = (center(:,1) - point_data).^2; h2 = (center(:,2) - point_data).^2; h3 = (center(原创 2020-10-15 16:14:44 · 490 阅读 · 0 评论 -
matlab实现ostu法图像分割
img= imread('rice.png');img = medfilt2(img);subplot(1,2,1),imshow(img);title('原图像')[M,N] = size(img);sum_total = sum(img(:));ave_total = sum_total/(M*N);[a,b] = imhist(img);a = a';b = b';T_optimal = 1;h_max =0;for T=2:255% 将直方图分开 a1 =原创 2020-10-14 22:32:05 · 2856 阅读 · 2 评论 -
matlab图像处理实现低通滤波
clc;clear all;img=imread('lena.jpg');img_noise = imnoise(img, 'gaussian', 0, 0.01);subplot(2,2,1),imshow(img_noise);title('原图像');% 将低频移动到图像的中心,这个也很重要s=fftshift(fft2(img_noise)); subplot(2,2,3),imshow(log(abs(s)),[]);title('图像傅里叶变换取对数所得频谱');% 求解变换原创 2020-10-14 21:19:33 · 15536 阅读 · 12 评论 -
matlab图像最大值和最小值滤波
clear;clc;img = imread('rice.png');[M,N] = size(img);% 最大值滤波for i = 2:M-1 for j=2:N-1 t = img(i-1:i+1,j-1:j+1); new_img_max(i,j) =max(t(:)); endend% 最小值滤波for i = 2:M-1 for j=2:N-1 t = img(i-1:i+1,j-1:j+1);原创 2020-10-13 20:05:48 · 6146 阅读 · 0 评论 -
图像锐化的模板操作
图像增强(锐化)相关算子这篇文章介绍了很多算子,并进行了测试结合之前写的图像平滑的算法,我简单写了一个用模板操作的代码clear;clc;img = imread('rice.png');% 拉普拉斯算子T = [0 -1 0;-1,4,-1;0,-1,0];[M,N] = size(img);img = double(img);for i =2:M-1 for j=2:N-1% 下面这一步是精华 t = img(i-1:i+1,j-1:j+1)原创 2020-10-13 17:24:36 · 1930 阅读 · 0 评论 -
matlab图像锐化的实现
clear;clc;img = imread('rice.png');subplot(1,4,1);subimage(img);title('原图像');[m,n] = size(img);img = double(img)for i = 1:m-1 for j =1: n-1 new_img1(i,j) = sqrt((img(i,j)-img(i+1,j))*(img(i,j)-img(i+1,j))+(img(i,j)-img(i,j+1))*(img(i,j)原创 2020-10-13 16:50:54 · 1457 阅读 · 0 评论 -
matlab实现图像中值滤波的方法
img = imread('rice.png');img2 = imnoise(img,'salt & pepper');subplot(1,3,1);subimage(img);title('原图像');subplot(1,3,2);subimage(img2);title('加入噪声的图像');% 对加入噪声的图像进行处理[m,n] = size(img);for i = 2:m-1 for j = 2:n-1 t = img(i-1:i+1,j-1:原创 2020-10-13 15:21:14 · 1098 阅读 · 0 评论 -
matlab利用生成的高斯模板,对图像进行操作
clear;clc;% 生成高斯模板[x,y] = meshgrid([-3:3],[-3:3]);sigma = 0.5;h = exp(-(x.*x+y.*y)./(2*sigma^2))/(2*pi*sigma^2)% 接着进行归一化处理sumh = sum(h(:))h = h/sumh;% 模板已经生成,接下来开始模板处理图像img = imread('lena.jpg');[M,N] = size(img);img = imnoise(img,'salt & pe原创 2020-10-09 11:23:31 · 555 阅读 · 0 评论 -
matlab实现高斯模板的生成
[x,y] = meshgrid([-3:3],[-3:3]);sigma = 0.5;h = exp(-(x.*x+y.*y)./(2*sigma^2))/(2*pi*sigma^2)% 接着进行归一化处理sumh = sum(h(:))h = h/sumhfspecial('gaussian',7)结果一致,很ok原创 2020-10-09 10:00:03 · 824 阅读 · 0 评论 -
matlab实现直方图均衡化和规范化
直方图均衡化clear;clc;img = imread('lena.jpg');[a,b] = imhist(img);[M,N] = size(img);new_img = zeros(M,N);stem(b,a/(M*N));% 下面开始统计概率密度分布t(1) = a(1);for i=2:256 t(i) = a(i)+t(i-1);endfor m=1:M for n=1:N new_img(m,n) = t(img(m,n)+1)/(M*原创 2020-10-08 22:06:36 · 1626 阅读 · 0 评论 -
图像加入噪声
cv::Mat salt(cv::Mat img, int n){ int i, j; for (int k = 0; k < n; ++k) { i = std::rand() % img.cols; j = std::rand() % img.rows; if (img.type() == CV_8UC1) { img.at<uchar>(j, i) = 0; } else if (img.type() ==CV_8UC3) { img.原创 2020-10-04 18:26:27 · 120 阅读 · 0 评论 -
数字图像处理1:图像的双线性插值
双线性插值(Matlab实现)选了一门数字图像处理,老师准备让我们手写一些源码,今天学习了一下双线性插值的算法在这里插入代码片原创 2020-09-24 17:24:24 · 601 阅读 · 0 评论 -
opencv学习(三):创建一个滑杆控制视屏播放的进度
感觉还是没理解蝴蝶书上给的代码的含义,没搞明白什么是单步模式和连续模式,于是我就简单的修改了一下,这里就是说明创建滑杆的方法,以及一些函数的使用。#include<opencv2/highgui/highgui.hpp>#include<opencv2/imgproc/imgproc.hpp>#include<iostream>#include<fstream>using namespace std;int g_slider_position=0;原创 2020-08-24 17:40:57 · 240 阅读 · 0 评论 -
opencv学习(二):读入视屏并显示
上一篇读入图片,这一篇读入视频,还是遇到了一点坑,一开始我是这样写的#include<opencv2/highgui/highgui.hpp>#include<opencv2/imgproc/imgproc.hpp>int main(int argc,char** argv){ cv::namedWindow("my_video"); cv::VideoCapture cap; cap.open("D:\\view.avi"); cv::Mat frame; for原创 2020-08-24 16:03:27 · 170 阅读 · 0 评论 -
ROS读取本地视频并显示
今天早上一个同学找我,需要解决一下读取本地视频,然后在ROS中显示的问题,正好最近准备学习一下opencv,就试了一下,结果直接就成功了,也源自网友的博客很给力,我参考的博客有两篇:ROS实时读取并显示摄像头图像opencv处理视频系列一:读取和显示视频一篇是ROS的图像传输机制(包括Cmakelists的配置),另一篇是opencv读取视频并显示。顺便感慨一下,ROS本身并不难,难在你需要很多知识的储备。就拿这个问题来说,读取视频本来就不是个难事,但放在ROS内就显得有些复杂。我是创建了一个vid原创 2020-08-24 07:51:25 · 1749 阅读 · 0 评论 -
opencv学习(一):安装opencv并显示图片
vs2017配置opencv3.4.1的详细教程,亲测有效原创 2020-08-23 19:09:48 · 120 阅读 · 0 评论