C++ 中 opencv Mat 变量的常见运算

本文介绍了C++中OpenCV库的cv::Mat变量的使用,包括读取图像、获取图像尺寸、遍历像素、切片操作、图像缩放和镜像翻转等基本操作。通过示例代码详细解析了每一步的操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. cv::Mat 的属性 

cv::Mat img ;

img = cv::imread( img_path, CV_LOAD_IMAGE_COLOR ) ;

if ( !img.data )

    std::cout << "Could not open or find file " << img_path << std::endl ;

int img_rows =  img.rows ; Mat 的高宽属性

int img_cols = img.cols ;

for( int h; h<img_rows; h++)

     for( int w; w<img_cols; w++ )

       {

        img.at<uchar>(h, w ) ; note the order of the height and cols

       }                                         similar as that of matlab. 

 cv::Mat img( height, width, CV_8UC1, cv::Scalar(0) ) ;

------------------------------------------------------------------------------------

cv::Rect roi ;

roi.x = 0 ;  start index of width 

roi.y = 0 ; start index of height

roi.width = (int) img_cols/2 ; 

roi.height = (int) img_rows/2 ;

cv::Mat c

### C++ 中使用 OpenCV 进行闭运算C++ 中利用 OpenCV 库执行闭运算是通过 `morphologyEx` 函数完成的。此函数支持多种形态学变换,其中闭运算可以通过指定参数来实现。 闭运算通常用于连接前景物体中的小缝隙或孔洞,以及平滑较大物体边界上的凹陷部分。具体来说,在应用闭运算时,先膨胀再腐蚀图像,这有助于封闭较小区域内的间隙并填充轮廓内部的小孔[^3]。 下面是一个完整的 C++ 示例程序展示如何对给定图片实施闭运算: ```cpp #include <opencv2/opencv.hpp> using namespace cv; int main() { // 加载原始灰度图作为输入 Mat src = imread("example.jpg", IMREAD_GRAYSCALE); if (src.empty()) { printf("Could not open or find the image\n"); return -1; } // 定义结构元素(内核) Mat element = getStructuringElement(MORPH_RECT, Size(5, 5)); // 创建目标矩阵变量 Mat closedImage; // 执行闭运算 morphologyEx(src, closedImage, MORPH_CLOSE, element); // 显示原图与处理后的对比效果 imshow("Original Image", src); imshow("Closed Image", closedImage); waitKey(0); // 等待按键事件关闭窗口 return 0; } ``` 上述代码片段展示了怎样加载一张名为 `"example.jpg"` 的灰度图像,并对其进行闭运算操作。这里选择了矩形形状大小为 \(5 \times 5\) 的结构元素来进行形态学转换[^4]。 #### 参数说明: - **InputArray src**: 输入图像。 - **OutputArray dst**: 输出图像。 - **int op**: 形态学运算的操作标志位,对于闭运算应设置为 `MORPH_CLOSE`。 - **InputArray kernel**: 结构化元素,即用来做卷积的核心模板。 - **Point anchor**: 锚定点,默认为中心位置 (-1,-1) 表示自动计算中心点。 - **iterations**: 变换重复次数,默认一次即可满足大多数需求。 - **borderType & borderValue**: 边界填充模式及其对应的像素值设定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值