小编Tar*_*ofl的帖子

如何使用 OpenCV 和 Python 提取最大的连通分量?

我在 Python 中使用 OpenCV 来仅识别图像上显示的 Leaf。我已经能够分割我的图像,现在我目前被困在“如何在检测到所有组件后裁剪最大的组件。下面是代码,请看一看。

  1. 使用scipy.ndimage,找到组件后无法前进:

    def undesired_objects ( image ):
        components, n = ndimage.label( image )
        components = skimage.morphology.remove_small_objects( components, min_size = 50 )
        components, n = ndimage.label( components )
        plot.imshow( components )
        plot.show()
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用 OpenCV connectedComponentsWithStats:

    def undesired_objects ( image ):
        image = image.astype( 'uint8' )
        nb_components, output, stats, centroids = cv2.connectedComponentsWithStats(image, connectivity=4)
        sizes = stats[1:, -1]; nb_components = nb_components - 1
        min_size = 150
        img2 = np.zeros(( output.shape ))
        for i in range(0, nb_components):
            if sizes[i] …
    Run Code Online (Sandbox Code Playgroud)

python opencv image-segmentation

5
推荐指数
1
解决办法
1万
查看次数

分割后如何去除前景中的阴影?

我正在用 Python 开发一种算法,该算法旨在识别叶子上包含斑点的区域,以报告疾病的严重程度。

因此,为了实现目标,我需要在前景(叶子)和背景上分割图像。

在我的研究过程中,我发现了 LeafSnap(State of the Art),并按照论文使用 OpenCV Expectation Maximization 分割图像上的叶子,该模型使用 S 和 V 形式 HSV 颜色空间进行训练;然而,由于反射或阴影,它仍然会返回一些误报。

细分问题

因此,我正在尝试找出一种方法来避免或减少误报的发生率。有什么提示吗?

原始图像

python opencv image image-processing image-segmentation

2
推荐指数
1
解决办法
4474
查看次数

单选可检查卡片视图

我已经按照https://medium.com/@AlbinPoignot/checkable-cardview-in-all-android-versions-7124ca6df1ab实现了一个可检查的 CardView

但是,我需要让用户只选择一个选项。澄清一下,如果一个已经被选中,并且用户选择了另一个,我需要取消选择上一个选项。

此外,我需要在返回选定的 CardView 时保持选中状态。

有人可以帮我完成这两项任务吗?下面是我的实现:


    public class CheckableCardView extends CardView implements Checkable {

        private static final int[] CHECKED_STATE_SET = {
                android.R.attr.state_checked
        };

        private boolean isChecked;
        private TextView itemText;

        public CheckableCardView(Context context) {
            super(context);
            init(null);
        }

        public CheckableCardView(Context context, AttributeSet attrs) {
            super(context, attrs);
            init(attrs);
        }

        public CheckableCardView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            init(attrs);
        }

        private void init(AttributeSet attrs) {
            LayoutInflater.from(getContext()).inflate(R.layout.checkable_card_view, this, true);

            setClickable(true);
            setChecked(false);

            setCardBackgroundColor(ContextCompat.getColorStateList(getContext(), R.color.selector_card_view_background));

            if (attrs != null) {
                TypedArray …
Run Code Online (Sandbox Code Playgroud)

android material-design android-cardview material-components material-components-android

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