【opencv】教程代码 —ImgProc (4) Hit or Miss形态学操作

4. HitMiss.cpp Hit or Miss形态学操作

kernel

cpp 复制代码
#include <opencv2/core.hpp> // 引入opencv库,用于处理序列和算子等基本数据结构
#include <opencv2/imgproc.hpp> // 引入opencv库,用于图片处理,包含图像过滤,几何转换,颜色转换等
#include <opencv2/highgui.hpp> // 引入opencv库,用于图像界面展示,存储以及鼠标交互等操作


using namespace cv; // 利用cv命名空间,减少代码量


int main(){ 
    // 创建一个8x8的矩阵,并初始化数据
    Mat input_image = (Mat_<uchar>(8, 8) << 
        0, 0, 0, 0, 0, 0, 0, 0,
        0, 255, 255, 255, 0, 0, 0, 255,
        0, 255, 255, 255, 0, 0, 0, 0,
        0, 255, 255, 255, 0, 255, 0, 0,
        0, 0, 255, 0, 0, 0, 0, 0,
        0, 0, 255, 0, 0, 255, 255, 0,
        0, 255, 0, 255, 0, 0, 255, 0,
        0, 255, 255, 255, 0, 0, 0, 0);


    // 创建一个3x3的矩阵,作为形态学操作的结构元素
    Mat kernel = (Mat_<int>(3, 3) <<
        0, 1, 0,
        1, -1, 1,
        0, 1, 0);


    Mat output_image; // 创建一个Mat对象,用来存储结果
    morphologyEx(input_image, output_image, MORPH_HITMISS, kernel); // 执行形态学操作


    const int rate = 50; 
    kernel = (kernel + 1) * 127; // 把kernel值调整到合理的显示范围内
    kernel.convertTo(kernel, CV_8U); // 将kernel的数据类型转换为8位无符号整数类型


    resize(kernel, kernel, Size(), rate, rate, INTER_NEAREST); // 缩放kernel,以显示在窗口上
    imshow("kernel", kernel); // 展示kernel结果
    moveWindow("kernel", 0, 0); // 移动window到指定位置


    resize(input_image, input_image, Size(), rate, rate, INTER_NEAREST); // 缩放input_image,以显示在窗口上
    imshow("Original", input_image); // 展示原始图片
    moveWindow("Original", 0, 200); //移动window到指定位置


    resize(output_image, output_image, Size(), rate, rate, INTER_NEAREST); // 缩放output_image,以显示在窗口上
    imshow("Hit or Miss", output_image); // 展示处理后的图片
    moveWindow("Hit or Miss", 500, 200); //移动window到指定位置


    waitKey(0); // 等待用户动作
    return 0; // 结束主函数
}

创建一个输入图像,并对其应用Hit-or-Miss转换(一种特定的形态学运算类型)。形态学操作的结果存储在另一图像中,并随后显示在屏幕上。代码还展示了如何创建用于形态学转换的核心,并显示原始和转换后的图像,以便比较。此程序的核心是**morphologyEx函数** ,它实现了形态学转换。这是一种处理数字图像和进行图像分析的基础工具,在计算机视觉和图像处理中非常常见。例如,可以用于移除图像中的噪声、执行图像分割,或者找出图像中的亮区域等。

相关推荐
sell-cloud2 小时前
Prompt Engineering要凉了?Fable 5.5能“猜“意图,但银行正在封杀AI Agent——企业AI的真正护城河是什么
人工智能·prompt
java1234_小锋2 小时前
【技术专题】HTML5 网页技术 - HTML5 Canvas 基础以及动画入门
前端·html·html5
Navicat中国3 小时前
Navicat 18 内置 AI 助手让数据库开发从繁琐操作迈向智能协作
大数据·人工智能·数据库开发
4SAPI4 小时前
多模型请求路由怎么设计?成本、速度和能力如何平衡
人工智能·python·gateway·php
魔乐社区4 小时前
翼芯・智算测试与适配优化专区,让国产算力“选得准、跑得通、用得好“
人工智能·开源·大模型
知了学历孙老师5 小时前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
XCDoris6 小时前
郴州logo设计机构
大数据·人工智能·python
Goboy6 小时前
一个人带三个Agent,我用全新TRAE从0到1搭了个资讯周刊站
人工智能·trae
俊哥V6 小时前
每日 AI 研究简报 · 2026-10-19
人工智能·ai
AI_AGENT_DEV_AI6 小时前
AI英语教培智能体的开发
人工智能