我尝试使用以下代码获取蒙版图像的边缘:
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) 我有以下清单:
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)
有谁知道我如何实现这一目标?
我有以下代码:
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)