有没有办法在 3-D 等距视图中制作一个 z-stack 2-D 图像,每个 2-D 图像中的点向下投影到下一个 2-D 图像切片?我确信这有一个技术术语,但我只是没有词汇来找到最相关的答案。有人能指出我正确的方向吗?
下面,我已经绘制了一个关于它是什么样子的“想法”。我很想知道这是否可行,而无需为matplotlib其他 Python 绘图库重新发明轮子。
我正在尝试将最小边界框适合下面显示的每个“斑点”。作为图像处理管道的一部分,我使用 findContours 来检测数据中的轮廓,然后在给定一组已发现的轮廓的情况下绘制最小边界框。
最小边界框不是很准确——一些特征显然被遗漏了,而另一些特征则不能完全“封装”一个全连接的特征(而是被分割成几个小的最小边界框)。我玩过检索模式(如下所示的 RETR_TREE)和轮廓近似方法(如下所示的 CHAIN_APPROX_TC89_L1),但找不到我真正喜欢的东西。有人可以建议一种更强大的策略来使用 OpenCV Python 更准确地捕获这些轮廓吗?

import numpy as np
import cv2
# load image from series of frames
for x in range(1, 20):
convolved = cv2.imread(x.jpg)
original = convolved.copy
#convert to grayscale
gray = cv2.cvtColor(convolved, cv2.COLOR_BGR2GRAY)
#find all contours in given frame, store in array
contours, hierarchy = cv2.findContours(gray,cv2.RETR_TREE, cv2.CHAIN_APPROX_TC89_L1)
boxArea = []
#draw minimum bounding box around each discovered contour
for cnt in contours:
area = cv2.contourArea(cnt)
if area > 2 …Run Code Online (Sandbox Code Playgroud) python opencv computer-vision image-segmentation opencv-contour
我目前正在应用Zhang-Suen细化算法来研究我想要稍后跟踪的一些细丝.这需要我输出灰度图像以便使用OpenCV识别对象.
import matplotlib
import matplotlib.pyplot as plt
import skimage.io as io
"load image data"
Img_Original = io.imread( './data/test1.bmp') # Gray image, rgb images need pre-conversion
"Convert gray images to binary images using Otsu's method"
from skimage.filter import threshold_otsu
Otsu_Threshold = threshold_otsu(Img_Original)
BW_Original = Img_Original < Otsu_Threshold # must set object region as 1, background region as 0 !
#...
"Apply the algorithm on images"
BW_Skeleton = zhangSuen(BW_Original)
# BW_Skeleton = BW_Original
"Display the results"
fig, ax = plt.subplots(1, …Run Code Online (Sandbox Code Playgroud) 我在 3 轴 (x, y, z) 中有两个错误数据帧:
df1 = pd.DataFrame([[0, 1, 2], [-1, 0, 1], [-2, 0, 3]], columns = ['x', 'y', 'z'])
df2 = pd.DataFrame([[1, 1, 3], [1, 0, 2], [1, 0, 3]], columns = ['x', 'y', 'z'])
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种快速的方法来找到两个数据帧的每一行的平方的笛卡尔和。
编辑我目前的解决方案:
cartesian_sum = list(np.sum(list(tup), axis = 0).tolist()
for tup in itertools.product( (df1**2).to_numpy().tolist(),
(df2**2).to_numpy().tolist() ) )
cartesian_sum
>>>
[[1, 2, 13],
[1, 1, 8],
[1, 1, 13],
[2, 1, 10],
[2, 0, 5],
[2, 0, 10],
[5, 1, 18],
[5, …Run Code Online (Sandbox Code Playgroud)