小编Kea*_*anu的帖子

Python:如何从图像中切出具有特定颜色的区域(OpenCV、Numpy)

所以我一直在尝试编写一个 Python 脚本,该脚本将图像作为输入,然后切出一个具有特定背景颜色的矩形。但是,导致我的编码技能出现问题的是,矩形不是每个图像中的固定位置(位置将是随机的)。

我不太明白如何管理 numpy 函数。我也读过一些关于 OpenCV 的东西,但我对它完全陌生。到目前为止,我只是通过“.crop”功能裁剪了图像,但随后我将不得不使用固定值。

这就是输入图像的外观,现在我想检测黄色矩形的位置,然后将图像裁剪到其大小。

感谢帮助,提前致谢。

图片外观示例(初始示例)

更新的图像,它的真实外观

编辑:@MarkSetchell 的方式效果很好,但发现不同的测试图片存在问题。另一张图片的问题是图片顶部和底部有2个颜色相同的小像素,导致错误或裁剪不好。

python opencv numpy crop python-imaging-library

7
推荐指数
2
解决办法
7243
查看次数

检测黑白图像上的白色矩形并裁剪(OpenCV)

我正在努力将图像裁剪为矩形大小,并将其放置在图像内部。这是原始图像:

这是我的原始图像

到目前为止,我能够输入它,将其颜色转换为 HSV 颜色空间并对其应用阈值。到目前为止,这是我的代码:

import cv2

#Read input image
img = cv2.imread('rdm_generated_image.png')

#convert from BGR to HSV color space
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

#get the saturation plane - all black/white/gray pixels are zero, and colored pixels are above zero.
s = hsv[:, :, 1]

#apply threshold on s
ret, thresh = cv2.threshold(s, 8, 255, cv2.THRESH_BINARY)

#invert colors, so every dark spots are now white
image = cv2.bitwise_not(thresh)

cv2.imwrite("image.png", image)
Run Code Online (Sandbox Code Playgroud)

完成此操作后,程序将输出以下内容:

输出

现在我只想将图像裁剪到中间的大框,但我无法检测到它的轮廓。

将其裁剪成这个尺寸

我尝试了它和cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)其他一些功能,但还没有成功。如果这是错误的做法,请纠正我。感谢帮助,因为我对 OpenCV 缺乏经验。

提前致谢!

python opencv crop python-imaging-library

0
推荐指数
1
解决办法
9883
查看次数

标签 统计

crop ×2

opencv ×2

python ×2

python-imaging-library ×2

numpy ×1