我正在尝试将cifar数据集上传到google colabratory.我是由
'batches.meta', 'data_batch_1', 'data_batch_2', 'data_batch_3', 'data_batch_4', 'data_batch_5', 'test_batch'
我想添加上传多个文件并将它们添加到同一个地方以对其进行操作
我想删除背景中存在的噪音.噪音不是标准模式.我想删除背景噪音,并将文字保存在白色背景上.
我使用下面的代码非常简单的处理步骤.
import cv2
import numpy as np
img = cv2.imread("noisy.PNG")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = cv2.subtract(255,gray)
ret,thresh = cv2.threshold(gray,5,255,cv2.THRESH_TOZERO)
noisy_removal = cv2.fastNlMeansDenoising(thresh, None, 65, 5, 21)
cv2.imwrite("finalresult.jpg",255-noisy_removal)
Run Code Online (Sandbox Code Playgroud)
这是输出图像:
我怎样才能增强这个结果
我有关于的内核大小的问题morphologyEx。我有一些验证码图片,我想对它们执行相同的操作并获得相同的最终结果。
代码:
image = cv2.imread("Image.jpg")
gray = cv2.cvtColor(image , cv2.COLOR_BGR2GRAY)
ret, thresh1 = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
k1 = np.ones((3,3))
k2 = np.ones((5,5))
bottom_image = cv2.morphologyEx(thresh1, cv2.MORPH_CLOSE, k1)
bottom_image = 255-bottom_image
bottom_image = remove_boxes(bottom_image , True)
ret,thresh2 = cv2.threshold(bottom_image,127,255,cv2.THRESH_BINARY_INV)
opening = cv2.morphologyEx(thresh2, cv2.MORPH_OPEN, k1)
#closing = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, k)
# cv2.imshow('opening', opening)
dilate = cv2.morphologyEx(opening, cv2.MORPH_DILATE, k2)
dilate = cv2.bitwise_not(dilate)
# cv2.imshow('dilation', dilate)
bottom_image = cv2.morphologyEx(bottom_image, cv2.MORPH_CLOSE, k1)
Run Code Online (Sandbox Code Playgroud)
完美的结果是
但是,当我将其应用于具有相同结构输出的其他图像时,就会出现问题。
输入: …
我到目前为止尝试使用OpenCV来获取边缘代码:
def autocrop(image, threshold=0):
"""Crops any edges below or equal to threshold
Crops blank image to 1x1.
Returns cropped image.
"""
if len(image.shape) == 3:
flatImage = np.max(image, 2)
else:
flatImage = image
assert len(flatImage.shape) == 2
rows = np.where(np.max(flatImage, 0) > threshold)[0]
if rows.size:
cols = np.where(np.max(flatImage, 1) > threshold)[0]
image = image[cols[0]: cols[-1] + 1, rows[0]: rows[-1] + 1]
else:
image = image[:1, :1]
return image
no_border = autocrop(new_image)
cv2.imwrite('no_border.png',no_border)
Run Code Online (Sandbox Code Playgroud)
结果是这个图像,接下来如何删除这些框
更新:
我发现该解决方案适用于白色背景,但是当我更改背景颜色边框时,不会删除
编辑
我试过这个图像的解决方案
但结果是这样的
如何实现完全删除边界框.
我想删除包含文本的图像的背景,使其在白色背景上的文本.
到目前为止我已经尝试过获取图像的HSV和上下边界,但我找不到可以去除所有背景效果的上下边界
直到现在使用的代码:
import cv2
import numpy as np
# Take each frame
filename = 'img2.png'
img = cv2.imread(filename, 1)
# Convert BGR to HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# define range of blue color in HSV
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])
# Threshold the HSV image to get only blue colors
image_final = cv2.inRange(hsv, lower_blue, upper_blue)
# Bitwise-AND mask and original image
res = cv2.bitwise_and(img,img, mask= mask)
cv2.imshow('frame',img)
cv2.imwrite('mask.png',image_final)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法,或者我必须结合多个下边界和上边界来达到我的目标?