图像处理简单实例[OpenCV 笔记1]

几个入门的简单程序,和对应的CMakeList, 虽然简单重新测一下写一下也是好的。

CMake教程传送门

图像显示

ShowImage.cxx

复制代码
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>

int main(){
    cv::Mat srcImage = cv::imread("1.jpg");
    imshow("Original Image", srcImage);
    cv::waitKey(0);
    return 0;
}
复制代码

CMakeLists.txt

复制代码
cmake_minimum_required (VERSION 2.8)
project (ShowImage)

find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )

# add the executable
add_executable (ShowImage ShowImage.cxx)
target_link_libraries(ShowImage opencv_core opencv_highgui opencv_imgcodecs)
复制代码

图像腐蚀

ErodeImage.cxx

复制代码
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>
#include <opencv2/imgproc/imgproc.hpp>

int main(){
    // read image
    cv::Mat srcImage = cv::imread("1.jpg");
    
    // show original image
    imshow("Original Image", srcImage);
    
    // erode image
    cv::Mat element = getStructuringElement(cv::MORPH_RECT, cv::Size(15,15));
    cv::Mat dstImage;
    erode(srcImage, dstImage, element);
    
    // show results
    imshow("Image Erosion", dstImage);
    cv::waitKey(0);
    return 0;
}
复制代码

CMakeList.txt

复制代码
cmake_minimum_required (VERSION 2.8)
project (ErodeImage)

# find OpenCV packages
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )

# add the executable
add_executable (ErodeImage ErodeImage.cxx)
target_link_libraries(ErodeImage opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs)
复制代码

图像模糊

BlurImage.cxx

复制代码
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>
#include <opencv2/imgproc/imgproc.hpp>

int main(){
    // read image
    cv::Mat srcImage = cv::imread("1.jpg");
    
    // show original image
    imshow("Original Image", srcImage);
    
    // blur image
    cv::Mat dstImage;
    blur(srcImage, dstImage, cv::Size(7,7));
    
    // show results
    imshow("Image Blurring", dstImage);
    cv::waitKey(0);
    return 0;
}
复制代码

CMakeList.txt

复制代码
cmake_minimum_required (VERSION 2.8)
project (BlurImage)

# find OpenCV packages
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )

# add the executable
add_executable (BlurImage BlurImage.cxx)
target_link_libraries(BlurImage opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs)
复制代码

Canny边缘检测

CannyEdgeDetection.cxx

复制代码
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgcodecs/imgcodecs.hpp>
#include <opencv2/imgproc/imgproc.hpp>

int main(){
    // read image
    cv::Mat srcImage = cv::imread("1.jpg");
    
    // show original image
    imshow("Original Image", srcImage);
    
    // blur image
    cv::Mat dstImage, edge, grayImage;
    
    // create a matrix the same size as srcImage
    dstImage.create(srcImage.size(), srcImage.type());
    
    // convert color image to gray-scale image
    // OpenCV2
    // cv::cvtColor(srcImage, grayImage, cv::CV_BGR2GRAY);
    // OpenCV3
    cv::cvtColor(srcImage, grayImage, cv::COLOR_BGR2GRAY);
    
    // denoising
    blur(srcImage, dstImage, cv::Size(3,3));
    
    // apply Canny operator
    Canny( dstImage, edge, 3, 9, 3);
    
    // show results
    imshow("Canny Edge Detection", edge);
    cv::waitKey(0);
    return 0;
}
复制代码

CMakeList.txt

复制代码
cmake_minimum_required (VERSION 2.8)
project (CannyEdgeDetection)

# find OpenCV packages
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )

# add the executable
add_executable (CannyEdgeDetection CannyEdgeDetection.cxx)
target_link_libraries(CannyEdgeDetection opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs)
复制代码

 

posted @   TinaSmile  阅读(3671)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示