OpenCV4.0入门学习篇_001_简单的图片锐化算法

作为自己的入门OpenCV入门第一步,稍微写写感受免得自己这个“烂硬盘”不时的消磁了就麻烦了
首先就直接贴出代码块了:(3*3锐化滤波器)

#include <stdio.h>
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv; //链接下文中所有函数至cv空间中查找

int main()

{
	//读取本地的一张图片便显示出来

	Mat img = imread("card.jpeg");

	if (!img.data){										//检查图像是否读入
		printf("Image not find!");
		return -1;
	}
	namedWindow("Input image", WINDOW_AUTOSIZE);
	imshow("Input image", img);
	
	int cols = (img.cols - 1) * img.channels();			//获取像素行个数
	int rows = img.rows;								//确定像素列个数
	uchar offsetx = img.channels();						//获取通道数

	Mat out = Mat::zeros(img.size(), img.type());		//建立空图像
	for (int row=1;row<rows-1;row++)
	{
		const uchar *current = img.ptr<uchar>(row);
		const uchar *previous = img.ptr<uchar>(row - 1);
		const uchar *next = img.ptr<uchar>(row + 1);
		uchar *output = out.ptr<uchar>(row);
		for (int col = offsetx; col < cols; col++){
			output[col] =saturate_cast<uchar>( 5 * current[col] - (current[col - offsetx] + current[col + offsetx] + previous[col] + next[col]));  //限定输出图像数值
		}

	}
	namedWindow("output image",WINDOW_AUTOSIZE);
	imshow("output image", out);
	waitKey(0);
	return 0;
}

作为OpenCV4.0对于之前版本的改变其实在这里已经略微的有所体现了,相较于之前3.x时代的namedWindow()函数其窗口设定中的“CV_WINDOW_AUTOSIZE”被变更为“WINDOW_AUTOSIZE”去掉了一部分前缀"CV _"。

备注:

在编辑过程中碰到的一个脑子没转过弯来的问题,对于处理一个稍大的图像时我尝试将行列指针与行列数据变量使用相同的数据类型,并尝试将prt函数后的回传参数类型内的uchar变更为int,则指针溢出。完全是因为我没搞清楚这地方的uchar并非与当前的行列数有关而与图片中的像素的色值有关。ORZ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值