OpenCV水平方向和竖直方向上的像素统计

对于图像,水平方向上的和竖直方向上的像素分布情况通常也会藏有许多信息,如图:


或许这还看不出些什么,再看:


这样就很明显了,竖直方向上连续像素不为0的区间肯定是数字的竖直位置,水平方向上的连续像素不为0的区间则有可能是数字的水平位置。

把统计数组画出来之后可以得到:


其中橙色的是竖直方向上的像素和的分布,蓝色的为水平方向的像素和的分布。

从曲线图中可以很明显的看出数字的分布,所以如果想要提取图像里面的代码可以这样做:

import numpy as np
import cv2
from matplotlib import pyplot as plt

def getImageHorizontalAndVerticalSum(ImageThre):
    rows, cols = ImageThre.shape
    horsum = []
    versum = []
    for i in range(cols):
        val = np.array(ImageThre[:, i]).sum()
        horsum.append(val)
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤使用Java OpenCV中的HoughLinesP方法来提取水平方向像素点: 1. 导入OpenCV库: ``` import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.MatOfDouble; import org.opencv.core.MatOfFloat; import org.opencv.core.Point; import org.opencv.core.Size; import org.opencv.highgui.HighGui; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; ``` 2. 读取图像并将其转换为灰度图像: ``` Mat image = Imgcodecs.imread("path/to/image.jpg"); Mat grayImage = new Mat(); Imgproc.cvtColor(image, grayImage, Imgproc.COLOR_BGR2GRAY); ``` 3. 对图像进行边缘检测: ``` Mat edges = new Mat(); Imgproc.Canny(grayImage, edges, 50, 200); ``` 4. 使用HoughLinesP方法检测直线: ``` Mat lines = new Mat(); int threshold = 50; int minLineSize = 100; int lineGap = 10; Imgproc.HoughLinesP(edges, lines, 1, Math.PI/2, threshold, minLineSize, lineGap); ``` 5. 过滤出水平方向的直线: ``` for (int i = 0; i < lines.rows(); i++) { double[] line = lines.get(i, 0); double x1 = line[0], y1 = line[1], x2 = line[2], y2 = line[3]; if (Math.abs(y2 - y1) < Math.abs(x2 - x1)) { Imgproc.line(image, new Point(x1, y1), new Point(x2, y2), new Scalar(0, 0, 255), 2); } } ``` 在这个例子中,我们假设水平方向的线条与Y轴的夹角为90度,所以在HoughLinesP方法中,我们将第四个参数设置为Math.PI/2。如果您的图像中的线条不是水平的,您可以调整这个参数来适应您的需求。 最后,您可以使用HighGui.imshow()方法显示提取出的水平线条。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值