小编Ric*_* M.的帖子

用任何设计模式或更好的方法替换if else语句

此代码看起来不干净,如果条件可以增长

public int VisitMonth(int months)
    {
        int visit = 0;

        if (months <= 1)
        {
            visit = 1;
        }
        else if (months <= 2)
        {
            visit = 2;
        }
        else if (months <= 4)
        {
            visit = 3;
        }
        else if (months <= 6)
        {
            visit = 4;
        }
        else if (months <= 9)
        {
            visit = 5;
        }
        else if (months <= 12)
        {
            visit = 6;
        }
        else if (months <= 15)
        {
            visit = 7;
        }
        else …
Run Code Online (Sandbox Code Playgroud)

c# oop design-patterns

6
推荐指数
2
解决办法
229
查看次数

测量带有opencv的远心单色相机拍摄的金属零件孔的直径图片

设定:

  • 相机:Blackfly S Mono 20.0 MP
  • 镜头:光远心镜头TC23080
  • 灯:16个绿色LED
  • 的Python:3.7.3
  • openCV:4.0以上

图片链接很抱歉,但是一张图片大约20MB,也不想丢失任何质量

图片样本:

https://drive.google.com/file/d/11PU-5fzvSJt1lKlmP-lQXhdsuCJPGKbN/view?usp=sharing https://drive.google.com/file/d/1B3lSFx8YvTYv3hzuuuYtphoHBuyEdc4o/view

案例:会有大小从5x5到10x10的不同形状的金属零件。在这些金属零件内部,有许多2至10〜的圆形孔,必须非常准确地检测到。孔的实际大小是未知的,因为可能的零件种类繁多。目的是使用OpenCV编写通用算法,该算法可与任何金属零件配合使用并检测圆形孔。

我们尝试过的方法:我们尝试使用HoughCircles算法检测孔,但几乎没有成功。该算法过于敏感,或者根本无法检测到孔。我们已经尝试了不同的param1和param2值,但没有成功。在使用HoughCircles之前,我们还尝试过使图像模糊并通过Canny,但是这种方法并未产生更好的结果。对于较低分辨率的图片,完全相同的算法效果更好。但是,不能牺牲分辨率,因为精度在此项目中极为重要。

https://drive.google.com/file/d/1TRdDbperi37bha0uJVALS4C2dBuaNz6u/view?usp=sharing

使用以下参数检测到上述圆圈:

minradius=0
maxradius=0
dp=1
param1=100
param2=21
Run Code Online (Sandbox Code Playgroud)

通过使用以上参数,我们几乎可以获得所需的结果。当我们对不同的图片使用相同的参数时,就会出现问题。

我们想要得到的最终结果是给定圆的直径具有很高的精度,并且我们希望在不同的零件图片上可以使用相同的算法

使这个问题与其他发布的问题不同的原因是,我们不知道给定圆的近似半径(因此我们无法操纵minradius,maxradius,param1,param2或任何其他值)。

python opencv image-processing computer-vision hough-transform

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

我如何让python将瑞典语字母(åäö)写入html文件?

所以代码我将一个 HTML 文件复制到一个字符串中,然后将除普通文本和注释外的所有内容更改为小写。问题是它还会将åäö更改为 VS 代码无法识别的内容。我能找到的是它的编码问题,但在 py3 上找不到任何关于它的信息,我为 py2 找到的解决方案不起作用。任何帮助表示赞赏,如果您知道如何改进代码请告诉我。

import re
import os


text_list = []

for root, dirs, files in os.walk("."):
    for filename in files:

        if (
            filename.endswith(".html")
        ):
            text_list.append(os.path.join(root, filename))

for file in text_list:

    file_content = open(f"{file}", "r+").read()

    if file.endswith(".html"):
        os.rename(file, file.replace(" ", "_").lower())
        code_strings = re.findall(r"<.+?>", file_content)
        for i, str in enumerate(code_strings):
            new_code_string = code_strings[i].lower()
            file_content = file_content.replace(code_strings[i], new_code_string)

    else:
        os.rename(file, file.replace(" ", "_").lower())
        file_content = file_content.lower()

    open(f"{file}", "r+").write(file_content)
Run Code Online (Sandbox Code Playgroud)

html python encoding character-encoding

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

如何在python中从SimpleITK中的二进制图像中提取标签

我想从使用以下代码获得的二维二进制图像中提取标签:

image2DThresh = sitk.Threshold(image2D, lower=stats.GetMinimum(), upper=127.500)
cca = sitk.ConnectedComponentImageFilter()
cca_image = cca.Execute(2D_Slice)
# Get the shape statistics of the labels using
labelStats = sitk.LabelShapeStatisticsImageFilter()
Run Code Online (Sandbox Code Playgroud)

基本思想是在主图像中找到标签的平均强度、ROI面积和最小/最大索引。我想要做的是使用阈值过滤器对图像进行二值化,然后在其上运行 CCA 以获取所有标签。然后我使用LabelShapeStatisticsImageFilter()获取每个标签的物理属性(当然标签0除外)并检查标签是否满足条件。问题是我无法在标签所在的主图像中获得平均强度。这就是为什么我建议使用LabelIntensityStatisticsFilter,但是对于 python 2.7,SimpleITK 0.10 不可用。

python-2.7 itk simpleitk

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