Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于OPENCV C++的二值图像裁剪文本_C++_Opencv_Crop - Fatal编程技术网

基于OPENCV C++的二值图像裁剪文本

基于OPENCV C++的二值图像裁剪文本,c++,opencv,crop,C++,Opencv,Crop,如何使用OpenCV裁剪图像,使图像中只包含文本? 假设你有像素信息,你可以在白色文本周围画一个圆圈。一旦你有了外壳,你可以得到最低和最高的x和y坐标,并使用它们作为你的矩形坐标,以便你可以裁剪图像的其余部分 一个在OpenCycVC++中如何获得凸包的例子是可用的。 在图像上应用一些过滤器可能是一个好主意,也可以使用过滤器来消除任何误报。假设您有像素信息,您可以在白色文本周围绘制一个标记。一旦你有了外壳,你可以得到最低和最高的x和y坐标,并使用它们作为你的矩形坐标,以便你可以裁剪图像的其余部分

如何使用OpenCV裁剪图像,使图像中只包含文本?

假设你有像素信息,你可以在白色文本周围画一个圆圈。一旦你有了外壳,你可以得到最低和最高的x和y坐标,并使用它们作为你的矩形坐标,以便你可以裁剪图像的其余部分

一个在OpenCycVC++中如何获得凸包的例子是可用的。


在图像上应用一些过滤器可能是一个好主意,也可以使用过滤器来消除任何误报。

假设您有像素信息,您可以在白色文本周围绘制一个标记。一旦你有了外壳,你可以得到最低和最高的x和y坐标,并使用它们作为你的矩形坐标,以便你可以裁剪图像的其余部分

一个在OpenCycVC++中如何获得凸包的例子是可用的。 在图像上应用一些过滤器可能是一个好主意,也许可以使用过滤器,以便删除任何误报。

方法

在垂直和水平方向上放大图像 查找边界矩形 裁剪图像 代码

输出

接近

在垂直和水平方向上放大图像 查找边界矩形 裁剪图像 代码

输出

在x方向和y方向对白色像素进行投影。x和y方向上的最低值和最高值分别是矩形的y坐标和x坐标的边界。 此解决方案适用于处理量和就地计算量较低的简单情况

在x方向和y方向上对白色像素进行投影。x和y方向上的最低值和最高值分别是矩形的y坐标和x坐标的边界。 此解决方案适用于处理量和就地计算量较低的简单情况

# reading the input image in grayscale image
image = cv2.imread('image2.png',cv2.IMREAD_GRAYSCALE)
image /= 255
if image is None:
    print 'Can not find/read the image data'
# Defining ver and hor kernel
N = 5
kernel = np.zeros((N,N), dtype=np.uint8)
kernel[2,:] = 1
dilated_image = cv2.dilate(image, kernel, iterations=2)

kernel = np.zeros((N,N), dtype=np.uint8)
kernel[:,2] = 1
dilated_image = cv2.dilate(dilated_image, kernel, iterations=2)
image *= 255

# finding contours in the dilated image
contours,a = cv2.findContours(dilated_image,cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# finding bounding rectangle using contours data points
rect = cv2.boundingRect(contours[0])
pt1 = (rect[0],rect[1])
pt2 = (rect[0]+rect[2],rect[1]+rect[3])
cv2.rectangle(image,pt1,pt2,(100,100,100),thickness=2)

# extracting the rectangle
text = image[rect[1]:rect[1]+rect[3],rect[0]:rect[0]+rect[2]]

plt.subplot(1,2,1), plt.imshow(image,'gray')
plt.subplot(1,2,2), plt.imshow(text,'gray')

plt.show()