我想计算红外相机生成的图像中形状的面积。
我有一大组矩阵,它们是由红外相机生成的。在每个矩阵/图像中,我的背景主要是一个点的图像,这是红外辐射的来源。我处理它的方法是使用 Python OpenCV 来通过消除背景和计算形状中的像素数来隔离源图像。问题是在每张图像中,图像的一部分也变成了背景,所以我无法像我想要的那样获得完整的图像。
import cv2
import numpy as np
from matplotlib import pyplot as plt
PPmm = 81/55 #Pixel per mm
img = np.genfromtxt('Image 5 Z_plane = 141.0_contour_plot.csv', delimiter= ',')
img_cv = cv2.resize(img,(81,81))
np.savetxt('testing.csv', img_cv, delimiter= ',')
img = (img_cv*255).astype(np.uint8)
edges = cv2.Canny(img,150,250)
se = np.ones((7,7), dtype='uint8')
# Perform morphology
image_close = cv2.morphologyEx(edges, cv2.MORPH_CLOSE, se)
# Your code now applied to the closed image
cnt = cv2.findContours(image_close, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0]
mask = np.zeros(img.shape[:2], np.uint8)
cv2.drawContours(mask, cnt, -1, 255, -1) …Run Code Online (Sandbox Code Playgroud) python opencv image-processing computer-vision opencv-contour
我一直在对 Python 运算符进行一些修改,但遇到了一些我不确定的事情。
如果我对 2 个整数执行按位运算 (&, |) ,我将毫不奇怪地得到它们的按位值
。意义:
>>> a = 11
>>> b = 3
>>> a & b
3
Run Code Online (Sandbox Code Playgroud)
这是因为按位和执行和对这些数字的二进制表示。但是,如果我使用内置的 and 运算符,我将获得第二个变量,而不管它是什么类型:
>>> b and a
11
>>> 'b' and 'a'
'a'
Run Code Online (Sandbox Code Playgroud)
为什么会这样?