【发布时间】:2018-11-24 00:49:12
【问题描述】:
import cv2
fname = '1.png'
img=cv2.imread(fname, 0)
print (img)//the outcome is an array of values from 0 to 255 (grayscale)
ret, thresh = cv2.threshold(img, 254, 255, cv2.THRESH_BINARY)
thresh = cv2.bitwise_not(thresh)
nums, labels = cv2.connectedComponents(thresh, None, 4, cv2.CV_32S)
dst = cv2.convertScaleAbs(255.0*labels/nums)
cv2.imwrite(dest_dir+"output.png", dst)
该代码工作得很好,所以我继续调整我的代码,以便它可以获取图像的一部分而不是整个图像:
from PIL import Image
img = Image.open(fname)
img2 = img.crop((int(xmin), int(yMin),int(xMax), int(yMax))
xmin ymin xmax ymax 只是盒子的左上角右下角坐标。
然后我做了img = cv2.imread(img2) 以继续之前的代码但出现错误,我打印了 img2 并得到了<PIL.Image.Image image mode=RGB size=54x10 at 0x7F4D283AFB70> 我如何调整它以便能够在上面的代码中输入裁剪或图像部分而不是 fname,请请注意,我不想将 img2 保存为图像并从那里继续,因为我需要处理主图像。
【问题讨论】:
-
这正是我说我不想做的,请参考我问题的最后一部分。
-
对不起我的错
-
不用担心,感谢您的建议,如果您有办法让我以我想要的格式提供该图像部分,我很想听听其他人的建议。
标签: python opencv image-processing pillow cv2