小编Naw*_*ain的帖子

如何使用同一图片的二进制蒙版图像裁剪图像以去除python中的背景?

我尝试使用以下代码获取蒙版图像的边缘:

import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread('ISIC_0000000_segmentation.png',0)
edges = cv2.Canny(img,0,255)

plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(edges, cmap='gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])

plt.show
Run Code Online (Sandbox Code Playgroud)

我得到的是这样的:

在此处输入图片说明 但由于某种原因,边缘并不光滑。

我的计划是使用边缘图像裁剪以下图片:

有谁知道如何使边缘图像更好,以及如何使用它来裁剪正常图像?

编辑:@Mark Setchell 提出了一个很好的观点:如果我可以直接使用蒙版图像来裁剪图像,那就太好了。

另外:也许可以将正常图像精确地放置在蒙版图像上,以便蒙版上的黑色区域覆盖正常图片上的蓝色区域。

编辑:@Mark Setchell 引入了将 normale 图像与蒙版图像相乘的想法,因此背景将导致 0(黑色),其余部分将保持其颜色。当我的蒙版图像是 .png 并且我的正常图片是 .jpg 时,会不会有问题?

编辑:我编写了以下代码来尝试将两张图片相乘:

# Importing Image and ImageChops module from PIL package  
from PIL import Image, ImageChops 

# creating a image1 object 
im1 = Image.open("ISIC_0000000.jpg") 

# creating a image2 object 
im2 = …
Run Code Online (Sandbox Code Playgroud)

python opencv image image-processing computer-vision

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

仅当值在python列表中多次出现时,我才打印

我有以下清单:

seqList = [0, 6, 1, 4, 4, 2, 4, 1, 7, 0, 4, 5]

我只想在列表中的项存在一次以上时打印列表中的项(在这种情况下,值为1和4),并且我想忽略列表中的第一个值(在这种情况下,值为0)

要计算每个值出现在列表中的次数,我有以下代码:

from collections import Counter

seqList = [0, 6, 1, 4, 4, 2, 4, 1, 7, 0, 4, 6]

c = dict(Counter(seqList))
print(c)
Run Code Online (Sandbox Code Playgroud)

输出:

{0: 2, 6: 1, 1: 2, 4: 4, 2: 1, 7: 1, 5: 1}
Run Code Online (Sandbox Code Playgroud)

但是我想忽略除1和4之外的所有内容,并且列表中的前0不应该计算在内。

我要打印的输出是:

-value 1 appears multiple times (2 times)
-value 4 appears multiple times (4 times)
Run Code Online (Sandbox Code Playgroud)

有谁知道我如何实现这一目标?

python list

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

如何在 C/Arduino 中将浮点值添加到字节数组?

我有以下代码:

float a = 12.38;
float b = 24.38;
float c = 25.78;
float d = 20.00;

byte dataArray[4] = {a, b, c, d};

void setup() {
  
Serial.begin(9600);
}

void loop() {
  
Serial.println(dataArray[0]);

}
Run Code Online (Sandbox Code Playgroud)

我想要得到的输出是,12.38但我得到的是12. 浮点数被转换为整数。我使用字节数组的原因是因为我想使用字节数组作为使用 I2C 通信发送给主设备的消息:

Wire.beginTransmission(slaveAddress); //address is queued for checking if the slave is present
  for (int i=0; i<4; i++)
  {
    Wire.write(dataArray[i]);  //data bytes are queued in local buffer
  }
  Wire.endTransmission();
Run Code Online (Sandbox Code Playgroud)

然后,Master 将使用以下代码读取并转换回原始数组:

#include<Wire.h>
#define slaveAddress 8  
byte dataArray[4];

void setup()
{ …
Run Code Online (Sandbox Code Playgroud)

c arrays arduino

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

标签 统计

python ×2

arduino ×1

arrays ×1

c ×1

computer-vision ×1

image ×1

image-processing ×1

list ×1

opencv ×1