数字分割 C++ OPENCV

本文介绍了如何使用C++结合OPENCV库处理数字分割问题。通过实例展示了数字5在原本存在连接的情况下,通过图像膨胀操作成功实现了数字的断开,解决了图像处理中的数字连接问题。
摘要由CSDN通过智能技术生成
/*
Mat数据类型指针ptr的使用
cv::Mat image = cv::Mat(400, 600, CV_8UC1); //宽400,长600
	uchar * data00 = image.ptr<uchar>(0); data00是指向image第一行第一个元素的指针。
	uchar * data10 = image.ptr<uchar>(1); data10是指向image第二行第一个元素的指针。
	uchar * data01 = image.ptr<uchar>(0)[1]; data01是指向image第一行第二个元素的指针。

image.ptr(1);指的不是image中第二个像素,而是第一行第二个像素的指针。
使用上面的代码举例:image有400行,有400*600个像素。假设现在你想得到第3行第42个像素的指针,如果你写成:
uchar * data = image.ptr<uchar>(3*image.cols + 41);
1 这样写是错误的,会出现上面的错误。你得到的不是第3行第42个像素的指针,而是第(3×image.cols + 41)行第0个像素的指针,因为没有(3×image.cols + 41)行,所以没有这个指针,所以错误。
正确的写法:

uchar * data = image.ptr<uchar>(3)[41];
1 所以要注意这一点:如果程序可以正常编译,但是运行时出错,很有可能是你给指针赋值的时候,索引值溢出指定范围,指针乱指,导致程序跑偏,所以只有在运行时才能发现错误。
*/
int CPicShowDlg::getColSum(Mat
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值