关于opencv Mat转数组指针* float的问题

deep.ptr<float>()
Mat.ptr<float>()

可以直接使用在下图情况

可以使用 OpenCV 的 cv::Mat 类的子图功能将一个大的 Mat 分割成多个小的子 Mat,从而实现将一个 Mat 分成 m * n 块的功能。具体步骤如下: 1. 首先,你需要定义一个大的 Mat 对象和一个子 Mat 对象,它们都要有相同的数据类型和通道数。 2. 然后,你需要计算每个子 Mat 的大小和位置。可以使用 cv::Size 类计算子 Mat 的大小,使用 cv::Rect 类计算子 Mat 的位置。 3. 接下来,你需要使用 cv::Mat::operator() 函数来提取子 Mat。该函数的参数是一个矩形区域,表示要提取的子 Mat 的左上角和右下角坐标。 4. 最后,你可以对每个子 Mat 进行任何你想要的操作,例如处理图像块,计算块的统计数据等。 下面是使用 OpenCV 将一个 Mat 分成 m * n 块的示例代码: ```c++ cv::Mat largeMat = cv::imread("large_image.jpg"); int m = 3; // number of rows int n = 4; // number of columns int blockWidth = largeMat.cols / n; int blockHeight = largeMat.rows / m; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { // calculate the position and size of the block int x = j * blockWidth; int y = i * blockHeight; cv::Rect blockRect(x, y, blockWidth, blockHeight); // extract the block from the large Mat cv::Mat blockMat = largeMat(blockRect); // do something with the block // ... } } ``` 在上面的示例代码中,我们首先加载一个大的图像,然后将其分成 3 * 4 块,每个块的大小由 blockWidth 和 blockHeight 计算得出。然后,我们使用两个嵌套的循环来遍历所有的块,计算每个块的位置和大小,提取每个块并进行一些处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

视觉小萌新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值