PyPI
通過(guò)終端升級(jí)PlantCV:
pip install --upgrade
Conda
通過(guò)終端升級(jí)PlantCV:
conda upgrade -n plantcv plantcv
如果conda無(wú)法更新PlantCV岂膳,請(qǐng)嘗試安裝特定版本。例如,如果你的版本是v3.6.1顾翼,而你想要安裝v3.6.2,你可以使用以下代碼:
conda install -n plantcv plantcv=3.6.2
你可以通過(guò)bioconda
查看最新的可用版本:
conda list plantcv
手動(dòng)安裝
如果你使用的是danforthcenter/plantcv
代碼庫(kù)克隆的master
分支宏赘,常規(guī)升級(jí)步驟是更新本地庫(kù)并重新安裝包绒北。
如果不確定是否從danforthcenter/plantcv
代碼庫(kù)克隆的master
分支,可以嘗試以下代碼:
cd plantcv
git remote -v
# 你會(huì)看到如下內(nèi)容:
# origin https://github.com/danforthcenter/plantcv.git (fetch)
git status
# 你會(huì)看到如下內(nèi)容:
# On branch master
# nothing to commit, working directory clean
如果以上內(nèi)容正確顯示察署,就可以通過(guò)下面的操作更新:
git pull
python setup.py install
# 如果需要權(quán)限請(qǐng)加sudo
如果你應(yīng)將克隆后的plantcv庫(kù)文件夾添加到你的PYTHONPATH
那么只需要拉取操作就可以升級(jí)闷游。具體依賴項(xiàng)詳見(jiàn)以下安裝說(shuō)明。當(dāng)使用PlantCV克隆時(shí)(而不是conda環(huán)境)贴汪,更新可能需要在克隆完成后手動(dòng)添加依賴項(xiàng)脐往。
從 v1 版升級(jí)到 v2 版
安裝工具方法在PlantCV v1中并不適用,所以用戶需要將plantcv/lib
路徑添加到自定義的PYTHONPATH
扳埂。在PlantCV v2中业簿,plantcv library路徑在lib中已經(jīng)不存在,而是在庫(kù)的main文件夾 (plantcv/plantcv
)阳懂。如果你想要繼續(xù)將plantcv添加到PYTHONPATH
辖源,你需要將‘lib’從路徑中移除來(lái)進(jìn)行更新。也可以在拉取新版本后移除lib文件夾克饶。Git會(huì)自動(dòng)移除 *.py
,但由于并不查詢誊辉,*.pyc
文件依舊會(huì)保留并且可以導(dǎo)入矾湃,會(huì)引起混亂。
針對(duì) Linux/Unix堕澄, PYTHONPATH
可以編輯為 ~/.bash_profile
, ~/.bashrc
, ~/.profile
, ~/.cshrc
, ~/.zshrc
, 等邀跃。
針對(duì) Windows, 右鍵我的電腦或者此電腦,選擇屬性>高級(jí)系統(tǒng)設(shè)置>環(huán)境變量蛙紫,編輯用戶變量添加 PYTHONPATH
拍屑。
同時(shí)要注意PlantCV并行方法也發(fā)生了改變,請(qǐng)查閱最新的 并行處理文檔
升級(jí)到 v3版
PlantCV v3新增功能的主要目標(biāo)是使PlantCV更容易使用坑傅。我們希望您接受以下變更僵驰,如果您有任何疑問(wèn)或者顧慮請(qǐng)隨時(shí)在GitHub開(kāi)一個(gè)討論話題或者直接聯(lián)系我們。
為了支持可選安裝附屬包唁毒,我們將PlantCV轉(zhuǎn)換為 namespace package蒜茴。為了實(shí)現(xiàn)新功能,已有函數(shù)已經(jīng)移動(dòng)到附屬包中來(lái)保持導(dǎo)入浆西。為了維持之前的操作粉私,PlantCV 分析腳本只需要修改一下PlantCV導(dǎo)入句式。所以如果你之前操作如下:
import plantcv as pcv
那么之后的操作:
from plantcv import plantcv as pcv
PlantCV v3另外一個(gè)推出的功能是升級(jí)現(xiàn)有包的API近零。這是為了通過(guò)減少導(dǎo)入導(dǎo)出需要的設(shè)置(在不減少功能的情況下)诺核,讓導(dǎo)入?yún)?shù)命名更加一致并且明確定義輸入輸出類型(例如抄肖,不再使用img
,而對(duì)RGB窖杀、灰度或黑白圖像分別使用 rgb_img
, gray_img
, 或 bin_img
)漓摩,讓每個(gè)PlantCV函數(shù)更佳容易使用。
在PlantCV v3.0dev2以后的版本中陈瘦,所有的函數(shù)已經(jīng)重新設(shè)計(jì)可以利用全局變量等級(jí)來(lái)承接標(biāo)準(zhǔn)導(dǎo)入數(shù)值例如 debug
和 device
幌甘,從而這些值不需要再額外從其他函數(shù)導(dǎo)入導(dǎo)出。一個(gè)案例class Params
痊项,由于params
在PlantCV導(dǎo)入后已經(jīng)自動(dòng)生成锅风,可以導(dǎo)入來(lái)設(shè)置全局默認(rèn)值。例如鞍泉,如果需要改變debug從None
到'plot' 或 'print'皱埠,你現(xiàn)在只需要在代碼或notebook最上方增加一行來(lái)改變所有下方函數(shù)的調(diào)用:
from plantcv import plantcv as pcv
pcv.params.debug = "plot"
因此,所有函數(shù)調(diào)用需要更新來(lái)移除 device
輸入和輸出變量以及debug
輸入變量咖驮。例如:
from plantcv import plantcv as pcv
pcv.params.debug = "plot"
img, img_path, img_filename = pcv.readimage("image.png")
gray_img = pcv.rgb2gray_hsv(img, "s")
bin_img = pcv.threshold.binary(gray_img, 100, 255)
更多信息詳見(jiàn) Params 文檔边器。
以下是所有從v3.0dev2之前版本到v3.0dev2之后版本函數(shù)調(diào)用的變更,以及v3.0發(fā)行版的升級(jí)托修⊥桑可以通過(guò)查看每個(gè)函數(shù)的幫助葉面來(lái)獲取更多輸入輸出變量類型信息。
plantcv.acute
- v3.0dev2之前: device, homolog_pts, start_pts, stop_pts, ptvals, chain, max_dist = plantcv.acute(obj, win, thresh, mask, device, debug=None)
- v3.0dev2之后: homolog_pts, start_pts, stop_pts, ptvals, chain, max_dist = plantcv.acute(obj, win, thresh, mask)
- v3.2之后: homolog_pts, start_pts, stop_pts, ptvals, chain, max_dist = plantcv.acute(obj, mask, win, thresh)
plantcv.acute_vertex
- v3.0dev2之前: device, acute = plantcv.acute_vertex(obj, win, thresh, sep, img, device, debug=None)
- v3.0dev2之后: acute = plantcv.acute_vertex(obj, win, thresh, sep, img)
- v3.2之后: acute, analysis_image = plantcv.acute_vertex(img, obj, win, thresh, sep)
plantcv.adaptive_threshold
- v3.0dev2之前: device, bin_img = plantcv.adaptive_threshold(img, maxValue, thres_type, object_type, device, debug=None)
- v3.0dev2之后: Deprecated, see:
- bin_img = plantcv.threshold.gaussian(gray_img, max_value, object_type="light")
- bin_img = plantcv.threshold.mean(gray_img, max_value, object_type="light")
plantcv.analyze_bound
- v3.0dev2之前: device, bound_header, bound_data, analysis_images = plantcv.analyze_bound(img, imgname, obj, mask, line_position, device, debug=None, filename=False)
- v3.0dev2之后: Deprecated, see:
- analysis_images = plantcv.analyze_bound_horizontal(img, obj, mask, line_position, filename=False)
plantcv.analyze_bound_horizontal
- v3.0dev2之前: device, bound_header, bound_data, analysis_images = plantcv.analyze_bound_horizontal(img, obj, mask, line_position, device, debug=None, filename=False)
- v3.0dev2之后: bound_header, bound_data, analysis_images = plantcv.analyze_bound_horizontal(img, obj, mask, line_position, filename=False)
- v3.0之后: bound_header, bound_data, analysis_images = plantcv.analyze_bound_horizontal(img, obj, mask, line_position)
- v3.3之后: analysis_image = plantcv.analyze_bound_horizontal(img, obj, mask, line_position)
plantcv.analyze_bound_vertical
- v3.0dev2之前: device, bound_header, bound_data, analysis_images = plantcv.analyze_bound_vertical(img, obj, mask, line_position, device, debug=None, filename=False)
- v3.0dev2之后: bound_header, bound_data, analysis_images = plantcv.analyze_bound_vertical(img, obj, mask, line_position, filename=False)
- v3.0.5之后: bound_header, bound_data, analysis_images = plantcv.analyze_bound_vertical(img, obj, mask, line_position)
- v3.3之后: analysis_image = plantcv.analyze_bound_vertical(img, obj, mask, line_position)
plantcv.analyze_color
- v3.0dev2之前: device, hist_header, hist_data, analysis_images = plantcv.analyze_color(img, imgname, mask, bins, device, debug=None, hist_plot_type=None, pseudo_channel='v', pseudo_bkg='img', resolution=300, filename=False)
- v3.0dev2之后: hist_header, hist_data, analysis_images = plantcv.analyze_color(rgb_img, mask, bins, hist_plot_type=None, pseudo_channel='v', pseudo_bkg='img', filename=False)
- v3.0之后: hist_header, hist_data, analysis_images = plantcv.analyze_color(rgb_img, mask, bins, hist_plot_type=None)
- v3.3之后: analysis_image = plantcv.analyze_color(rgb_img, mask, hist_plot_type=None)
plantcv.analyze_nir_intensity
- v3.0dev2之前: device, hist_header, hist_data, analysis_img = plantcv.analyze_NIR_intensity(img, rgbimg, mask, bins, device, histplot=False, debug=None, filename=False)
- v3.0dev2之后: hist_header, hist_data, analysis_img = plantcv.analyze_nir_intensity(gray_img, mask, bins, histplot=False, filename=False)
- v3.0之后: hist_header, hist_data, nir_hist = plantcv.analyze_nir_intensity(gray_img, mask, bins, histplot=False)
- v3.3之后: nir_hist = plantcv.analyze_nir_intensity(gray_img, mask, bins, histplot=False)
plantcv.analyze_object
- v3.0dev2之前: device, shape_header, shape_data, analysis_images = plantcv.analyze_object(img, imgname, obj, mask, device, debug=None, filename=False)
- v3.0dev2之后: shape_header, shape_data, analysis_images = plantcv.analyze_object(img, obj, mask, filename=False)
- v3.0之后: shape_header, shape_data, analysis_images = plantcv.analyze_object(img, obj, mask)
- v3.3之后: analysis_image = plantcv.analyze_object(img, obj, mask)
plantcv.analyze_thermal_values
- v3.5之前: NA
- v3.5之后: thermal_histogram = plantcv.analyze_thermal_values(thermal_array, mask, histplot=False)
plantcv.apply_mask
- v3.0dev2之前: device, masked_img = plantcv.apply_mask(img, mask, mask_color, device, debug=None)
- v3.0dev2之后: masked_img = plantcv.apply_mask(rgb_img, mask, mask_color)
- v3.7之后: masked_img = plantcv.apply_mask(img, mask, mask_color)
plantcv.auto_crop
- v3.0dev2之前: device, cropped = plantcv.auto_crop(device, img, objects, padding_x=0, padding_y=0, color='black', debug=None)
- v3.0dev2之后: cropped = plantcv.auto_crop(img, objects, padding_x=0, padding_y=0, color='black')
- v3.2之后: cropped = plantcv.auto_crop(img, obj, padding_x=0, padding_y=0, color='black')
plantcv.background_subtraction
- v3.0dev2之前: device, fgmask = plantcv.background_subtraction(background_image, foreground_image, device, debug=None)
- v3.0dev2之后: fgmask = plantcv.background_subtraction(background_image, foreground_image)
plantcv.binary_threshold
- v3.0dev2之前: device, bin_img = plantcv.binary_threshold(img, threshold, maxValue, object_type, device, debug=None)
- v3.0dev2之后: Deprecated, see:
- bin_img = plantcv.threshold.binary(gray_img, threshold, max_value, object_type="light")
plantcv.canny_edge_detect
- v3.2之前: NA
- v3.2之后: bin_img = plantcv.canny_edge_detect(img, mask=None, sigma=1.0, low_thresh=None, high_thresh=None, thickness=1, mask_color=None, use_quantiles=False)
plantcv.closing
- v3.3之前: NA
- v3.3之后: filtered_img = plantcv.closing(gray_img, kernel=None)
plantcv.cluster_contour_splitimg
- v3.0dev2之前: device, output_path = plantcv.cluster_contour_splitimg(device, img, grouped_contour_indexes, contours, hierarchy, outdir=None, file=None, filenames=None, debug=None)
- v3.0dev2之后: output_path = plantcv.cluster_contour_splitimg(rgb_img, grouped_contour_indexes, contours, hierarchy, outdir=None, file=None, filenames=None)
- v3.3之后: output_path, output_imgs, output_masks = plantcv.cluster_contour_splitimg(rgb_img, grouped_contour_indexes, contours, hierarchy, outdir=None, file=None, filenames=None)
plantcv.cluster_contours
- v3.0dev2之前: device, grouped_contour_indexes, contours, roi_obj_hierarchy = plantcv.cluster_contours(device, img, roi_objects,roi_obj_hierarchy, nrow=1, ncol=1, debug=None)
- v3.0dev2之后: grouped_contour_indexes, contours, roi_obj_hierarchy = plantcv.cluster_contours(img, roi_objects, roi_obj_hierarchy, nrow=1, ncol=1)
- v3.2之后: grouped_contour_indexes, contours, roi_obj_hierarchy = plantcv.cluster_contours(img, roi_objects, roi_object_hierarchy, nrow=1, ncol=1, show_grid=False)
plantcv.color_palette
- v3.0之前: NA
- v3.0之后: colors = plantcv.color_palette(num)
plantcv.crop_position_mask
- v3.0dev2之前: device, newmask = plantcv.crop_position_mask(img, mask, device, x, y, v_pos="top", h_pos="right", debug=None)
- v3.0dev2之后: newmask = plantcv.crop_position_mask(img, mask, x, y, v_pos="top", h_pos="right")
plantcv.define_roi
- v3.0dev2之前: device, contour, hierarchy = plantcv.define_roi(img, shape, device, roi=None, roi_input='default', debug=None, adjust=False, x_adj=0, y_adj=0, w_adj=0, h_adj=0)
- v3.0dev2之后: Deprecated, see:
- roi_contour, roi_hierarchy = plantcv.roi.circle(img, x, y, r)
- roi_contour, roi_hierarchy = plantcv.roi.ellipse(img, x, y, r1, r2, angle)
- roi_contour, roi_hierarchy = plantcv.roi.from_binary_image(img, bin_img)
- roi_contour, roi_hierarchy = plantcv.roi.rectangle(img, x, y, h, w)
plantcv.dilate
- v3.0dev2之前: device, dil_img = plantcv.dilate(img, kernel, i, device, debug=None)
- v3.0dev2之后: dil_img = plantcv.dilate(gray_img, kernel, i)
- v3.2之后: dil_img = plantcv.dilate(gray_img, ksize, i)
plantcv.distance_transform
- v3.0dev2之前: device, norm_image = plantcv.distance_transform(img, distanceType, maskSize, device, debug=None)
- v3.0dev2之后: norm_image = plantcv.distance_transform(bin_img, distance_type, mask_size)
plantcv.erode
- v3.0dev2之前: device, er_img = plantcv.erode(img, kernel, i, device, debug=None)
- v3.0dev2之后: er_img = plantcv.erode(gray_img, kernel, i)
- v3.2之后: er_img = plantcv.erode(gray_img, ksize, i)
plantcv.fill
- v3.0dev2之前: device, filtered_img = plantcv.fill(img, mask, size, device, debug=None)
- v3.0dev2之后: filtered_img = plantcv.fill(bin_img, size)
plantcv.fill_holes
- v3.3之前: NA
- v3.3之后: filtered_img = plantcv.fill(bin_img)
plantcv.find_objects
- v3.0dev2之前: device, objects, hierarchy = plantcv.find_objects(img, mask, device, debug=None)
- v3.0dev2之后: objects, hierarchy = plantcv.find_objects(img, mask)
plantcv.flip
- v3.0dev2之前: device, vh_img = plantcv.flip(img, direction, device, debug=None)
- v3.0dev2之后: vh_img = plantcv.flip(img, direction)
plantcv.fluor_fvfm
- v3.0dev2之前: device, hist_header, hist_data = plantcv.fluor_fvfm(fdark, fmin, fmax, mask, device, filename, bins=1000, debug=None)
- v3.0dev2之后: hist_header, hist_data, hist_images = plantcv.fluor_fvfm(fdark, fmin, fmax, mask, filename, bins=256)
- v3.0之后: hist_header, hist_data, analysis_images = plantcv.fluor_fvfm(fdark, fmin, fmax, mask, bins=256)
- v3.3之后: analysis_images = plantcv.fluor_fvfm(fdark, fmin, fmax, mask, bins=256)
plantcv.gaussian_blur
- v3.0dev2之前: device, img_gblur = plantcv.gaussian_blur(device, img, ksize, sigmax=0, sigmay=None, debug=None)
- v3.0dev2之后: img_gblur = plantcv.gaussian_blur(img, ksize, sigmax=0, sigmay=None)
- v3.2之后: img_gblur = plantcv.gaussian_blur(img, ksize, sigma_x=0, sigma_y=None)
plantcv.get_nir
- v3.0dev2之前: device, nirpath = plantcv.get_nir(path, filename, device, debug=None)
- v3.0dev2之后: nirpath = plantcv.get_nir(path, filename)
plantcv.hist_equalization
- v3.0dev2之前: device, img_eh = plantcv.hist_equalization(img, device, debug=None)
- v3.0dev2之后: img_eh = plantcv.hist_equalization(gray_img)
plantcv.hyperspectral.analyze_index
- v3.7之前: NA
- v3.7之后: plantcv.hyperspectral.analyze_index(index_array, mask)
- v3.8之后: index_histogram = plantcv.hyperspectral.analyze_index(index_array, mask, histplot=False, bins=100, max_bin=0, min_bin=1)
plantcv.hyperspectral.analyze_spectral
- v3.7之前: NA
- v3.7之后: spectral_histogram = plantcv.hyperspectral.analyze_spectral(array, mask, histplot=True)
plantcv.hyperspectral.extract_index
- v3.7之前: NA
- v3.7之后: index_array = plantcv.hyperspectral.extract_index(array, index="NDVI", distance=20)
- v3.8之后: DEPRECATED see plantcv.spectral_index
plantcv.image_add
- v3.0dev2之前: device, added_img = plantcv.image_add(img1, img2, device, debug=None)
- v3.0dev2之后: added_img = plantcv.image_add(gray_img1, gray_img2)
plantcv.image_subtract
- v3.0之前: NA
- v3.0之后: new_img = plantcv.image_subtract(gray_img1, gray_img2)
plantcv.invert
- v3.0dev2之前: device, img_inv = plantcv.invert(img, device, debug=None)
- v3.0dev2之后: img_inv = plantcv.invert(gray_img)
plantcv.landmark_reference_pt_dist
- v3.0dev2之前: device, vert_ave_c, hori_ave_c, euc_ave_c, ang_ave_c, vert_ave_b, hori_ave_b, euc_ave_b, ang_ave_b = plantcv.landmark_reference_pt_dist(points_r, centroid_r, bline_r, device, debug=None)
- v3.0dev2之后: vert_ave_c, hori_ave_c, euc_ave_c, ang_ave_c, vert_ave_b, hori_ave_b, euc_ave_b, ang_ave_b = plantcv.landmark_reference_pt_dist(points_r, centroid_r, bline_r)
- v3.2之后: landmark_header, landmark_data = plantcv.landmark_reference_pt_dist(points_r, centroid_r, bline_r)
- v3.3之后: plantcv.landmark_reference_pt_dist(points_r, centroid_r, bline_r)
plantcv.laplace_filter
- v3.0dev2之前: device, lp_filtered = plantcv.laplace_filter(img, k, scale, device, debug=None)
- v3.0dev2之后: lp_filtered = plantcv.laplace_filter(gray_img, k, scale)
- v3.2之后: lp_filtered = plantcv.laplace_filter(gray_img, ksize, scale)
plantcv.logical_and
- v3.0dev2之前: device, merged = plantcv.logical_and(img1, img2, device, debug=None)
- v3.0dev2之后: merged = plantcv.logical_and(bin_img1, bin_img2)
plantcv.logical_or
- v3.0dev2之前: device, merged = plantcv.logical_or(img1, img2, device, debug=None)
- v3.0dev2之后: merged = plantcv.logical_or(bin_img1, bin_img2)
plantcv.logical_xor
- v3.0dev2之前: device, merged = plantcv.logical_xor(img1, img2, device, debug=None)
- v3.0dev2之后: merged = plantcv.logical_xor(bin_img1, bin_img2)
plantcv.median_blur
- v3.0dev2之前: device, img_mblur = plantcv.median_blur(img, ksize, device, debug=None)
- v3.0dev2之后: img_mblur = plantcv.median_blur(gray_img, ksize)
- v3.2之后: img_blur = plantcv.median_blur(gray_img, ksize) OR img_blur = plantcv.median_blur(gray_img, (ksize1, ksize2))
plantcv.morphology.check_cycles
- v3.3之前: NA
- v3.3之后: cycle_img = plantcv.morphology.check_cycles(skel_img)
plantcv.morphology.find_branch_pts
- v3.3之前: NA
- v3.3之后: branch_pts_img = plantcv.morphology.find_branch_pts(skel_img, mask=None)
plantcv.morphology.find_tips
- v3.3之前: NA
- v3.3之后: tip_img = plantcv.morphology.find_tips(skel_img, mask=None)
plantcv.morphology.prune
- v3.3之前: NA
- v3.3之后: pruned_img = plantcv.morphology.prune(skel_img, size)
- v3.4之后: pruned_skeleton, segmented_img, segment_objects = plantcv.morphology.prune(skel_img, size=0, mask=None)
plantcv.morphology.segment_angle
- v3.3之前: NA
- v3.3之后: labeled_img = plantcv.morphology.segment_angle(segmented_img, objects)
plantcv.morphology.curvature
- v3.3之前: NA
- v3.3之后: labeled_img = plantcv.morphology.segment_curvature(segmented_img, objects)
plantcv.morphology.segment_euclidean_length
- v3.3之前: NA
- v3.3之后: labeled_img = plantcv.morphology.segment_euclidean_length(segmented_img, objects)
plantcv.morphology.segment_id
- v3.3之前: NA
- v3.3之后: segmented_img, labeled_img = plantcv.morphology.segment_id(skel_img, objects, mask=None)
plantcv.morphology.segment_path_length
- v3.3之前: NA
- v3.3之后: labeled_img = plantcv.morphology.segment_path_length(segmented_img, objects)
plantcv.morphology.segment_skeleton
- v3.3之前: NA
- v3.3之后: segmented_img, segment_objects = plantcv.morphology.segment_skeleton(skel_img, mask=None)
plantcv.morphology.segment_sort
- v3.3之前: NA
- v3.3之后: secondary_objects, primary_objects = plantcv.morphology.segment_sort(skel_img, objects, mask=None)
plantcv.morphology.segment_tangent_angle
- v3.3之前: NA
- v3.3之后: labeled_img = plantcv.morphology.segment_tangent_angle(segmented_img, objects, size)
plantcv.morphology.skeletontize
- v3.3之前: NA
- v3.3之后: skeleton = plantcv.morphology.skeletonize(mask)
plantcv.naive_bayes_classifier
- v3.0dev2之前: device, masks = plantcv.naive_bayes_classifier(img, pdf_file, device, debug=None)**
- v3.0dev2之后: masks = plantcv.naive_bayes_classifier(rgb_img, pdf_file)**
plantcv.object_composition
- v3.0dev2之前: device, group, mask = plantcv.object_composition(img, contours, hierarchy, device, debug=None)
- v3.0dev2之后: group, mask = plantcv.object_composition(img, contours, hierarchy)
plantcv.opening
- v3.3之前: NA
- v3.3之后: filtered_img = plantcv.opening(gray_img, kernel=None)
plantcv.otsu_auto_threshold
- v3.0dev2之前: device, bin_img = plantcv.otsu_auto_threshold(img, maxValue, object_type, device, debug=None)
- v3.0dev2之后: Deprecated, see:
- bin_img = plantcv.threshold.otsu(gray_img, max_value, object_type="light")
plantcv.output_mask
- v3.0dev2之前: device, maskpath, analysis_images = plantcv.output_mask(device, img, mask, filename, outdir=None, mask_only=False, debug=None)
- v3.0dev2之后: imgpath, maskpath, analysis_images = plantcv.output_mask(img, mask, filename, outdir=None, mask_only=False)
plantcv.plot_hist
- v3.0dev2之前: bins, hist = plantcv.plot_hist(img, name=False)
- v3.0dev2之后: bins, hist = plantcv.plot_hist(img, name=False)
- v3.2之后: Deprecated, see:
- hist_header, hist_data, fig_hist = plantcv.visualize.histogram(gray_img, mask=None, bins=256)
plantcv.plot_image
- v3.0dev2之前: plantcv.plot_image(img, cmap=None)
- v3.0dev2之后: plantcv.plot_image(img, cmap=None)
plantcv.print_image
- v3.0dev2之前: plantcv.print_image(img, filename)
- v3.0dev2之后: plantcv.print_image(img, filename)
plantcv.print_results
- v3.1之前: NA
- v3.1之后: plantcv.print_results(filename)
plantcv.pseudocolor
- v3.1之前: NA
- v3.1之后: pseudo_img = plantcv.pseudocolor(gray_img, obj=None, mask=None, cmap=None, background="image", min_value=0, max_value=255, dpi=None, axes=True, colorbar=True)
- v3.2之后: Deprecated, see:
- pseudo_img = plantcv.visualize.pseudocolor(gray_img, obj=None, mask=None, cmap=None, background="image", min_value=0, max_value=255, axes=True, colorbar=True)
plantcv.readbayer
- v3.0之前: NA
- v3.0之后: img, path, img_name = plantcv.readbayer(filename, bayerpattern = 'BG', alg = 'default')
plantcv.readimage
- v3.0dev2之前: img, path, img_name = plantcv.readimage(filename, debug=None)
- v3.0dev2之后: img, path, img_name = plantcv.readimage(filename, mode="native")
plantcv.rectangle_mask
- v3.0dev2之前: device, img1, bnk, contour, hierarchy = plantcv.rectangle_mask(img, p1, p2, device, debug=None, color="black")
- v3.0dev2之后: img1, bnk, contour, hierarchy = plantcv.rectangle_mask(img, p1, p2, color="black")
plantcv.report_size_marker_area
- v3.0dev2之前: device, marker_header, marker_data, analysis_images = plantcv.report_size_marker_area(img, shape, device, debug, marker='define', x_adj=0, y_adj=0, w_adj=0, h_adj=0, base='white', objcolor='dark', thresh_channel=None, thresh=None, filename=False)
- v3.0dev2之后: marker_header, marker_data, analysis_images = plantcv.report_size_marker_area(img, roi_contour, roi_hierarchy, marker='define', objcolor='dark', thresh_channel=None, thresh=None, filename=False)
- v3.1之后: marker_header, marker_data, analysis_image = plantcv.report_size_marker_area(img, roi_contour, roi_hierarchy, marker='define', objcolor='dark', thresh_channel=None, thresh=None)
- v3.3之后: analysis_image = plantcv.report_size_marker_area(img, roi_contour, roi_hierarchy, marker='define', objcolor='dark', thresh_channel=None, thresh=None)
plantcv.resize
- v3.0dev2之前: device, reimg = plantcv.resize(img, resize_x, resize_y, device, debug=None)
- v3.0dev2之后: reimg = plantcv.resize(img, resize_x, resize_y)
plantcv.rgb2gray
- v3.0dev2之前: device, gray = plantcv.rgb2gray(img, device, debug=None)
- v3.0dev2之后: gray = plantcv.rgb2gray(rgb_img)
plantcv.rgb2gray_hsv
- v3.0dev2之前: device, gray = plantcv.rgb2gray_hsv(img, channel, device, debug=None)
- v3.0dev2之后: gray = plantcv.rgb2gray_hsv(rgb_img, channel)
plantcv.rgb2gray_lab
- v3.0dev2之前: device, gray = plantcv.rgb2gray_lab(img, channel, device, debug=None)
- v3.0dev2之后: gray = plantcv.rgb2gray_lab(rgb_img, channel)
plantcv.roi.circle
- v3.0dev之前1: NA
- v3.0dev2之后: roi_contour, roi_hierarchy = plantcv.roi.circle(x, y, r, img)
- v3.2之后: roi_contour, roi_hierarchy = plantcv.roi.circle(img, x, y, r)
plantcv.roi.ellipse
- v3.0dev之前1: NA
- v3.0dev2之后: roi_contour, roi_hierarchy = plantcv.roi.ellipse(x, y, r1, r2, angle, img)
- v3.2之后: roi_contour, roi_hierarchy = plantcv.roi.ellipse(img, x, y, r1, r2, angle)
plantcv.roi.from_binary_image
- v3.0dev之前1: NA
- v3.0dev2之后: roi_contour, roi_hierarchy = plantcv.roi.from_binary_image(bin_img, img)
- v3.2之后: roi_contour, roi_hierarchy = plantcv.roi.from_binary(img, bin_img)
plantcv.roi.rectangle
- v3.0dev之前1: NA
- v3.0dev2之后: roi_contour, roi_hierarchy = plantcv.roi.rectangle(x, y, h, w, img)
- v3.2之后: roi_contour, roi_hierarchy = plantcv.roi.rectangle(img, x, y, h, w)
plantcv.roi.roi2mask
- v3.8之前: NA
- v3.8之后: mask = pcv.roi.roi2mask(img, contour)
plantcv.roi.multi
- v3.1之前: NA
- v3.1之后: roi_contours, roi_hierarchies = plantcv.roi.multi(img, coord, radius, spacing=None, nrows=None, ncols=None)
plantcv.roi_objects
- v3.0dev2之前: device, kept_cnt, hierarchy, mask, obj_area = plantcv.roi_objects(img, roi_type, roi_contour, roi_hierarchy, object_contour, obj_hierarchy, device, debug=None)
- v3.0dev2之后: kept_cnt, hierarchy, mask, obj_area = plantcv.roi_objects(img, roi_type, roi_contour, roi_hierarchy, object_contour, obj_hierarchy)
- v3.3之后: kept_cnt, hierarchy, mask, obj_area = plantcv.roi_objects(img, roi_contour, roi_hierarchy, object_contour, obj_hierarchy,roi_type='partial')
plantcv.rotate
- v3.0dev2之前: device, rotated_img = plantcv.rotate(img, rotation_deg, crop, device, debug=None)
- v3.0dev2之后: rotated_img = plantcv.rotate(img, rotation_deg, crop)
plantcv.rotate_img
- v3.0dev2之前: device, rotated_img = plantcv.rotate_img(img, rotation_deg, device, debug=None)
- v3.0dev2之后: Deprecated, see:
- rotated_img = plantcv.rotate(img, rotation_deg, crop)
plantcv.scale_features
- v3.0dev2之前: device, rescaled, centroid_scaled, boundary_line_scaled = plantcv.scale_features(obj, mask, points, boundary_line, device, debug=None)
- v3.0dev2之后: rescaled, centroid_scaled, boundary_line_scaled = plantcv.scale_features(obj, mask, points, boundary_line)
- v3.2之后: rescaled, centroid_scaled, boundary_line_scaled = plantcv.scale_features(obj, mask, points, line_position)
plantcv.scharr_filter
- v3.0dev2之前: device, sr_img = plantcv.scharr_filter(img, dX, dY, scale, device, debug=None)
- v3.0dev2之后: sr_img = plantcv.scharr_filter(gray_img, dx, dy, scale)
plantcv.shift_img
- v3.0dev2之前: device, adjusted_img = plantcv.shift_img(img, device, number, side="right", debug=None)
- v3.0dev2之后: adjusted_img = plantcv.shift_img(img, number, side="right")
plantcv.sobel_filter
- v3.0dev2之前: device, sb_img = plantcv.sobel_filter(img, dx, dy, k, device, debug=None)
- v3.0dev2之后: sb_img = plantcv.sobel_filter(gray_img, dx, dy, k)
- v3.2之后: sb_img = plantcv.sobel_filer(gray_img, dx, dy, ksize)
plantcv.spectral_index.ndvi(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.ndvi(hsi, distance=20)
plantcv.spectral_index.gdvi(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.gdvi(hsi, distance=20)
plantcv.spectral_index.savi(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.savi(hsi, distance=20)
plantcv.spectral_index.pri(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.pri(hsi, distance=20)
plantcv.spectral_index.ari(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.ari(hsi, distance=20)
plantcv.spectral_index.ci_rededge(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.ci_rededge(hsi, distance=20)
plantcv.spectral_index.cri550(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.cri550(hsi, distance=20)
plantcv.spectral_index.cri700(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.cri700(hsi, distance=20)
plantcv.spectral_index.egi(rgb_img)
- v3.8之后: array = plantcv.spectral_index.egi(rgb_img)
plantcv.spectral_index.evi(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.evi(hsi, distance=20)
plantcv.spectral_index.mari(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.mari(hsi, distance=20)
plantcv.spectral_index.mcari(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.mcari(hsi, distance=20)
plantcv.spectral_index.mtci(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.mtci(hsi, distance=20)
plantcv.spectral_index.ndre(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.ndre(hsi, distance=20)
plantcv.spectral_index.psnd_chla(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.psnd_chla(hsi, distance=20)
plantcv.spectral_index.psnd_chlb(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.psnd_chlb(hsi, distance=20)
plantcv.spectral_index.psnd_car(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.psnd_car(hsi, distance=20)
plantcv.spectral_index.psri(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.psri(hsi, distance=20)
plantcv.spectral_index.pssr_chla(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.pssr_chla(hsi, distance=20)
plantcv.spectral_index.pssr_chlb(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.pssr_chlb(hsi, distance=20)
plantcv.spectral_index.pssr_car(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.pssr_car(hsi, distance=20)
plantcv.spectral_index.rgri(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.rgri(hsi, distance=20)
plantcv.spectral_index.rvsi(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.rvsi(hsi, distance=20)
plantcv.spectral_index.sipi(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.sipi(hsi, distance=20)
plantcv.spectral_index.sr(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.sr(hsi, distance=20)
plantcv.spectral_index.vari(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.vari(hsi, distance=20)
plantcv.spectral_index.vi_green(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.vi_green(hsi, distance=20)
plantcv.spectral_index.wi(hsi, distance=20)
- v3.8之后: array = plantcv.spectral_index.wi(hsi, distance=20)
plantcv.stdev_filter
- v3.9之前: NA
- v3.9之后: filtered_img = plantcv.stdev_filter(img, kszie, borders="nearest")
plantcv.threshold.binary
- v3.0dev2之前: NA
- v3.0dev2之后: bin_img = plantcv.threshold.binary(gray_img, threshold, max_value, object_type="light")
plantcv.threshold.custom_range
- v3.3之前: NA
- v3.3之后: mask, masked_img = plantcv.threshold.custom_range(rgb_img, lower_thresh, upper_thresh, channel='RGB')**
- v3.8之后: mask, masked_img = plantcv.threshold.custom_range(img, lower_thresh, upper_thresh, channel='RGB')**
plantcv.threshold.gaussian
- v3.0dev2之前: NA
- v3.0dev2之后: bin_img = plantcv.threshold.gaussian(gray_img, max_value, object_type="light")
plantcv.threshold.mean
- v3.0dev2之前: NA
- v3.0dev2之后: bin_img = plantcv.threshold.mean(gray_img, max_value, object_type="light")
plantcv.threshold.otsu
- v3.0dev2之前: NA
- v3.0dev2之后: bin_img = plantcv.threshold.otsu(gray_img, max_value, object_type="light")
plantcv.threshold.saturation
- v3.8之前: NA
- v3.8之后: bin_img = plantcv.threshold.saturation(*rgb_img, threshold=255, channel="any")
plantcv.threshold.texture_filter
- v3.0之前: NA
- v3.0之后: bin_img = plantcv.threshold.texture_filter(gray_img, ksize, threshold, offset=3, texture_method='dissimilarity', borders='nearest', max_value=255)
plantcv.threshold.triangle
- v3.0dev2之前: NA
- v3.0dev2之后: bin_img = plantcv.threshold.triangle(gray_img, max_value, object_type="light", xstep=1)
plantcv.transform.apply_transformation_matrix
- v3.0dev之前1: NA
- v3.0dev2之后: corrected_img = plantcv.transform.apply_transformation_matrix(source_img, target_img, transformation_matrix)
plantcv.transform.calc_transformation_matrix
- v3.0dev之前1: NA
- v3.0dev2之后: determinant, transformation_matrix = plantcv.transform.calc_transformation_matrix(matrix_m, matrix_b)
plantcv.transform.correct_color
- v3.0dev之前1: NA
- v3.0dev2之后: target_matrix, source_matrix, transformation_matrix, corrected_img = plantcv.transform.correct_color(target_img, target_mask, source_img, source_mask, output_directory)
plantcv.transform.create_color_card_mask
- v3.0之前: NA
- v3.0之后: mask = pcv.transform.create_color_card_mask(rgb_img, radius, start_coord, spacing, nrows, ncols, exclude=[])
plantcv.transform.find_color_card
- v3.0之前: NA
- v3.0之后: df, start_coord, spacing = plantcv.transform.find_color_card(rgb_img, threshold='adaptgauss', threshvalue=125, blurry=False, background='dark')
- v3.3之后: df, start_coord, spacing = plantcv.transform.find_color_card(rgb_img, threshold_type='adaptgauss', threshvalue=125, blurry=False, background='dark')
- v3.9之后: df, start_coord, spacing = plantcv.transform.find_color_card(rgb_img, threshold_type='adaptgauss', threshvalue=125, blurry=False, background='dark', record_chip_size='median')
plantcv.transform.get_color_matrix
- v3.0dev之前1: NA
- v3.0dev2之后: headers, color_matrix = plantcv.transform.get_color_matrix(rgb_img, mask)
plantcv.transform.get_matrix_m
- v3.0dev之前1: NA
- v3.0dev2之后: matrix_a, matrix_m, matrix_b = plantcv.transform.get_matrix_m(target_matrix, source_matrix)
plantcv.transform.load_matrix
- v3.0dev之前1: NA
- v3.0dev2之后: matrix = plantcv.transform.load_matrix(filename)
plantcv.transform.nonuniform_illumination
- v3.5之前: NA
- v3.5之后: corrected_img = plantcv.transform.nonuniform_illumination(img, ksize)
plantcv.transform.quick_color_check
- v3.0之前: NA
- v3.0之后: plantcv.transform.quick_color_check(target_matrix, source_matrix, num_chips)
plantcv.transform.save_matrix
- v3.0dev之前1: NA
- v3.0dev2之后: plantcv.transform.save_matrix(matrix, filename)
plantcv.triangle_auto_threshold
- v3.0dev2之前: device, bin_img = plantcv.triangle_auto_threshold(device, img, maxvalue, object_type, xstep=1, debug=None)
- v3.0dev2之后: Deprecated, see:
- bin_img = plantcv.threshold.triangle(gray_img, max_value, object_type="light", xstep=1)
plantcv.visualize.colorize_masks
- v3.2之前: NA
- v3.2之后: colored_img = pcv.visualize.colorize_masks(classes, colors)
plantcv.visualize.colorspaces
- v3.8之前: NA
- v3.8之后: plotting_img = pcv.visualize.colorspaces(rgb_img)
plantcv.visualize.histogram
- v3.2之前: bins, hist = plantcv.plot_hist(img, name=False)
- v3.2之后: hist_header, hist_data, fig_hist = plantcv.visualize.histogram(gray_img, mask=None, bins=256)
- v3.3之后: hist_header, hist_data, fig_hist = plantcv.visualize.histogram(gray_img, mask=None, bins=256, color='red', title=None)
- v3.5之后: fig_hist = plantcv.visualize.histogram(gray_img, mask=None, bins=256, color='red', title=None)
plantcv.visualize.pseudocolor
- v3.2之前: pseudo_img = plantcv.pseudocolor(gray_img, obj=None, mask=None, cmap=None, background="image", min_value=0, max_value=255, dpi=None, axes=True, colorbar=True)
- v3.2之后: pseudo_img = plantcv.visualize.pseudocolor(gray_img, obj=None, mask=None, cmap=None, background="image", min_value=0, max_value=255, dpi=None, axes=True, colorbar=True)
- v3.3之后: pseudo_img = plantcv.visualize.pseudocolor(gray_img, obj=None, mask=None, cmap=None, background="image", min_value=0, max_value=255, axes=True, colorbar=True)
plantcv.watershed_segmentation
- v3.0dev2之前: device, watershed_header, watershed_data, analysis_images = plantcv.watershed_segmentation(device, img, mask, distance=10, filename=False, debug=None)
- v3.0dev2之后: watershed_header, watershed_data, analysis_images = plantcv.watershed_segmentation(rgb_img, mask, distance=10, filename=False)
- v3.1之后: watershed_header, watershed_data, analysis_images = plantcv.watershed_segmentation(rgb_img, mask, distance=10)
- v3.3之后: analysis_image = plantcv.watershed_segmentation(rgb_img, mask, distance=10)
plantcv.white_balance
- v3.0dev2之前: device, finalcorrected = plantcv.white_balance(device, img, mode='hist',debug=None, roi=None)
- v3.0dev2之后: finalcorrected = plantcv.white_balance(img, mode='hist', roi=None)
plantcv.within_frame
- v3.3之前: NA
- v3.3之后: in_bounds = plantcv.within_frame(mask)
- v3.8之后: in_bounds = plantcv.within_frame(mask, border_width=1)
plantcv.x_axis_pseudolandmarks
- v3.0dev2之前: device, top, bottom, center_v = plantcv.x_axis_pseudolandmarks(obj, mask, img, device, debug=None)
- v3.0dev2之后: top, bottom, center_v = plantcv.x_axis_pseudolandmarks(obj, mask, img)
- v3.2之后: top, bottom, center_v = plantcv.x_axis_pseudolandmarks(img, obj, mask)
plantcv.y_axis_pseudolandmarks
- v3.0dev2之前: device, left, right, center_h = plantcv.y_axis_pseudolandmarks(obj, mask, img, device, debug=None)
- v3.0dev2之后: left, right, center_h = plantcv.y_axis_pseudolandmarks(obj, mask, img)
- v3.2之后: left, right, center_h = plantcv.y_axis_pseudolandmarks(img, obj, mask)