Closed13

install plantcv

takurxtakurx

まずpipがなかったので

sudo apt install python3-pip

しかしpython3-pipがみつからないエラー

ネットワークエラーを疑う

sudo apt update

Ignでリストが取得できない。
プロキシでネットワークエラーになっている可能性を考える。

Proxy環境内のWSL2でapt updateが失敗する #WSL2 - Qiita
https://qiita.com/ippaiattena/items/4a21052fff8f82f6974c

まずDNSの設定を確認した。

$ cat /etc/wsl.conf

[boot]
systemd=true

[network]
generateResolvConf = false
$ cat /etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
#nameserver xxx.xxx.xxx.xxx
nameserver yyy.yyy.yyy.yyy

DNSの設定をしたところ、sudo apt updateが動くようになって、sudo apt install python3-pipして、pipがインストールできたのでOK

takurxtakurx

サンプルコードを動かしたい

Updating PlantCV - PlantCV
https://plantcv.readthedocs.io/en/stable/updating/

サンプルコード中のrgb_img.pngは
docs/img/documentation_images/roi_filter にある。
plantcv/docs/img/documentation_images/roi_filter at main · danforthcenter/plantcv
https://github.com/danforthcenter/plantcv/tree/main/docs/img/documentation_images/roi_filter

git clone https://github.com/danforthcenter/plantcv.git
cd plantcv/docs/img/documentation_images/roi_filter

plantcv v3用サンプルコード

from plantcv import plantcv as pcv
pcv.params.debug = "plot"

# Read in image data 
img, path, filename = pcv.readimage(filename="rgb_img.png")

# Covert to grayscale colorspace 
a = pcv.rgb2gray_lab(rgb_img=img, channel='a')

# Threshold/segment plant from background 
bin_mask = pcv.threshold.binary(gray_img=a, threshold=100, max_value=255, object_type="light")

# Define objects & hierarchies (needed for OpenCV)
id_objects, obj_hierarchy = pcv.find_objects(img=img, mask=bin_mask)

# Define ROI 
roi_contour, roi_hierarchy = pcv.roi.rectangle(img=img, x=100, y=100, h=100, w=100)

# Filter binary image to make a clean mask based on ROI
kept_objs, kept_h, kept_mask, obj_area = pcv.roi_objects(img=img,roi_contour=roi_contour,
roi_hierarchy=roi_h,
object_contour=id_objects,
obj_hierarchy=obj_hierarchy,
roi_type="partial")

# Perform object composition (needed for OpenCV)
plant_obj, mask = pcv.object_composition(img=img,
contours=kept_objs, hierarchy=kept_h)        

# Finally extract shape traits from plant 
shape_img = pcv.analyze_object(img=img, obj=plant_obj, mask=mask)

# Save out data to file
pcv.outputs.save_results(filename="results.txt", outformat="json")
# In even older versions of PlantCV (pre v3.12) it would have been 
# pcv.print_results(filename="results.txt")

libGLがみつからないエラー

$ python3 example_plantcv.py
Traceback (most recent call last):
  File "/home/ynakagawa/plantcv/docs/img/documentation_images/roi_filter/example_plantcv.py", line 1, in <module>
    from plantcv import plantcv as pcv
  File "/home/ynakagawa/.local/lib/python3.10/site-packages/plantcv/plantcv/__init__.py", line 2, in <module>
    from plantcv.plantcv.classes import Params
  File "/home/ynakagawa/.local/lib/python3.10/site-packages/plantcv/plantcv/classes.py", line 3, in <module>
    import cv2
  File "/home/ynakagawa/.local/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module>
    bootstrap()
  File "/home/ynakagawa/.local/lib/python3.10/site-packages/cv2/__init__.py", line 153, in bootstrap
    native_module = importlib.import_module("cv2")
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
  • pip intall plantcvしたのが、v3なのかv4なのかわからないところ
takurxtakurx

サンプルコードを動かしたい2

[Python / opencv-python] ImportError: libGL.so.1: cannot open shared object file の対策 #Python - Qiita
https://qiita.com/siruku6/items/b8aae4cdbf6ebc0dc5d6
OpenCV: Install OpenCV-Python in Ubuntu
https://docs.opencv.org/4.8.0/d2/de6/tutorial_py_setup_in_ubuntu.html

sudo apt install python3-opencv

opencvバージョン確認

import cv2 as cv
print(cv.__version__)
$ python3 check_opencv_version.py
4.9.0 

plantcvバージョン確認

from plantcv import plantcv as pcv
print(pcv.__version__)
$ python3 check_plantcv_version.py
4.2.1

plantcv · PyPI
https://pypi.org/project/plantcv/
pipの現行バージョンも4.2.1なので符合する

サンプルコードを動かしてみたが、v3用なのでエラーっぽい。v4用を動かしてみる

$ python3 example_plantcv.py
/home/ynakagawa/.local/lib/python3.10/site-packages/plantcv/plantcv/plot_image.py:30: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown
  plt.show()
/home/ynakagawa/.local/lib/python3.10/site-packages/plantcv/plantcv/plot_image.py:40: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown
  plt.show()
Traceback (most recent call last):
  File "/home/ynakagawa/plantcv/docs/img/documentation_images/roi_filter/example_plantcv.py", line 14, in <module>
    bin_mask = pcv.threshold.binary(gray_img=a, threshold=100, max_value=255, object_type="light")
TypeError: binary() got an unexpected keyword argument 'max_value'
takurxtakurx

サンプルコードを動かしたい3

plantcv v4用のサンプルコード

from plantcv import plantcv as pcv
pcv.params.debug = "plot"

# Read in image data (no change)
img, path, filename = pcv.readimage(filename="rgb_img.png")

# Covert to grayscale colorspace (no change)
a = pcv.rgb2gray_lab(rgb_img=img, channel='a')

# Threshold/segment plant from background (removed max_value)
bin_mask = pcv.threshold.binary(gray_img=a, threshold=100, object_type="light")

# Define ROI (reduced outputs)
roi = pcv.roi.rectangle(img=img, x=100, y=100, h=100, w=100)

# Filter binary image to make a clean mask based on ROI 
# (no longer needs `pcv.find_objects` or `pcv.object_composition`)
mask = pcv.roi.filter(mask=bin_img, roi=roi, roi_type="partial")

# Extract shape traits from plant
shape_img = pcv.analyze.size(img=img,labeled_mask=mask, n_labels=1)

# Save out data to file
pcv.outputs.save_results(filename="results.txt", outformat="json")

rgb_img.pngと同じカレントパスで実行した。

$ python3 example_plantcv-1.py
/home/ynakagawa/.local/lib/python3.10/site-packages/plantcv/plantcv/plot_image.py:30: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown
  plt.show()
/home/ynakagawa/.local/lib/python3.10/site-packages/plantcv/plantcv/plot_image.py:40: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown
  plt.show()
/home/ynakagawa/.local/lib/python3.10/site-packages/plantcv/plantcv/plot_image.py:35: UserWarning: FigureCanvasAgg is non-interactive, and thus cannot be shown
  plt.show()
Traceback (most recent call last):
  File "/home/ynakagawa/plantcv/docs/img/documentation_images/roi_filter/example_plantcv-1.py", line 18, in <module>
    mask = pcv.roi.filter(mask=bin_img, roi=roi, roi_type="partial")
NameError: name 'bin_img' is not defined
takurxtakurx

サンプルコードを動かしたい4

matplotlibはインストール済みだった。
windows shell linuxのubuntu 22.04.3だから、windowが開かないのか?

$ pip install matplotlib
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: matplotlib in /home/ynakagawa/.local/lib/python3.10/site-packages (3.8.3)
Requirement already satisfied: pillow>=8 in /home/ynakagawa/.local/lib/python3.10/site-packages (from matplotlib) (10.2.0)
Requirement already satisfied: packaging>=20.0 in /home/ynakagawa/.local/lib/python3.10/site-packages (from matplotlib) (23.2)
equirement already satisfied: pyparsing>=2.3.1 in /usr/lib/python3/dist-packages (from matplotlib) (2.4.7)
Requirement already satisfied: kiwisolver>=1.3.1 in /home/ynakagawa/.local/lib/python3.10/site-packages (from matplotlib) (1.4.5)
Requirement already satisfied: cycler>=0.10 in /home/ynakagawa/.local/lib/python3.10/site-packages (from matplotlib) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /home/ynakagawa/.local/lib/python3.10/site-packages (from matplotlib) (4.49.0)
Requirement already satisfied: contourpy>=1.0.1 in /home/ynakagawa/.local/lib/python3.10/site-packages (from matplotlib) (1.2.0)
Requirement already satisfied: python-dateutil>=2.7 in /home/ynakagawa/.local/lib/python3.10/site-packages (from matplotlib) (2.8.2)
Requirement already satisfied: numpy<2,>=1.21 in /home/ynakagawa/.local/lib/python3.10/site-packages (from matplotlib) (1.26.4)
Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)

FigureCanvasAgg interactivity problem - Community - Matplotlib
https://discourse.matplotlib.org/t/figurecanvasagg-interactivity-problem/24042

pip install PyQt5
$ python3 example_plantcv-1.py
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/ynakagawa/.local/lib/python3.10/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl.

Aborted

aptでもPyQt5をインストールしたらエラーが増えた

ubuntuにpyqt5をインストールする #PyQt5 - Qiita
https://qiita.com/seigot/items/3e0273ed23ccaaad74bc

sudo apt install python3-pyqt5
$ python3 example_plantcv-1.py
QObject::moveToThread: Current thread (0x564185410440) is not the object's thread (0x564184c15fb0).
Cannot move to target thread (0x564185410440)

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/ynakagawa/.local/lib/python3.10/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl.

Aborted

removeしとく

sudo apt purge python3-pyqt5

あんまり変わってない

$ python3 example_plantcv-1.py
QObject::moveToThread: Current thread (0x56446d9233c0) is not the object's thread (0x56446ef5abb0).
Cannot move to target thread (0x56446d9233c0)

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/ynakagawa/.local/lib/python3.10/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl.

Aborted 
takurxtakurx

Ubuntu 20.04でも同じエラー

chino@chino-Legion-5-15IAH7H:~/Works/plantcv/docs/img/documentation_images/roi_filter$ python3 example_platcv-1.py 
QObject::moveToThread: Current thread (0x1d75e00) is not the object's thread (0x1c95ec0).
Cannot move to target thread (0x1d75e00)

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/chino/.local/lib/python3.8/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl.

Aborted (core dumped)
takurxtakurx

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found. というエラーが起きたときの対処 #Qt - Qiita
https://qiita.com/fukasawah/items/99219e1ff7d08915952f

chino@chino-Legion-5-15IAH7H:~/Works/plantcv/docs/img/documentation_images/roi_filter$ find /usr | grep "qxcb"
/usr/local/MATLAB/R2023a/bin/glnxa64/platforms/libqxcb.so
/usr/local/MATLAB/R2023a/bin/glnxa64/xcbglintegrations/libqxcb-glx-integration.so
/usr/include/x86_64-linux-gnu/qt5/QtPlatformHeaders/qxcbwindowfunctions.h
/usr/include/x86_64-linux-gnu/qt5/QtPlatformHeaders/qxcbscreenfunctions.h
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/xcbglintegrations/libqxcb-egl-integration.so
/usr/lib/x86_64-linux-gnu/qt5/plugins/xcbglintegrations/libqxcb-glx-integration.so

/usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so っぽい?

chino@chino-Legion-5-15IAH7H:~/Works/plantcv/docs/img/documentation_images/roi_filter$ ldd /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so
	linux-vdso.so.1 (0x00007ffe1df9a000)
	libQt5XcbQpa.so.5 => /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 (0x00007f005994a000)
	libQt5Gui.so.5 => /lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007f005935f000)
	libQt5Core.so.5 => /lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f0058e16000)
	libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f0058c34000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0058a42000)
	libfontconfig.so.1 => /lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f00589fb000)
	libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f005893a000)
	libQt5DBus.so.5 => /lib/x86_64-linux-gnu/libQt5DBus.so.5 (0x00007f005889e000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f005887b000)
	libX11-xcb.so.1 => /lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f0058876000)
	libxcb-xinput.so.0 => /lib/x86_64-linux-gnu/libxcb-xinput.so.0 (0x00007f0058852000)
	libxcb-icccm.so.4 => /lib/x86_64-linux-gnu/libxcb-icccm.so.4 (0x00007f005884b000)
	libxcb-image.so.0 => /lib/x86_64-linux-gnu/libxcb-image.so.0 (0x00007f0058644000)
	libxcb-shm.so.0 => /lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f005863f000)
	libxcb-keysyms.so.1 => /lib/x86_64-linux-gnu/libxcb-keysyms.so.1 (0x00007f005863a000)
	libxcb-randr.so.0 => /lib/x86_64-linux-gnu/libxcb-randr.so.0 (0x00007f0058627000)
	libxcb-render-util.so.0 => /lib/x86_64-linux-gnu/libxcb-render-util.so.0 (0x00007f0058620000)
	libxcb-render.so.0 => /lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f0058611000)
	libxcb-shape.so.0 => /lib/x86_64-linux-gnu/libxcb-shape.so.0 (0x00007f005860a000)
	libxcb-sync.so.1 => /lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007f0058600000)
	libxcb-xfixes.so.0 => /lib/x86_64-linux-gnu/libxcb-xfixes.so.0 (0x00007f00585f6000)
	libxcb-xinerama.so.0 => /lib/x86_64-linux-gnu/libxcb-xinerama.so.0 (0x00007f00585f1000)
	libxcb-xkb.so.1 => /lib/x86_64-linux-gnu/libxcb-xkb.so.1 (0x00007f00585d3000)
	libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f00585a9000)
	libXrender.so.1 => /lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f005839d000)
	libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f0058260000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f0058111000)
	libSM.so.6 => /lib/x86_64-linux-gnu/libSM.so.6 (0x00007f0058106000)
	libICE.so.6 => /lib/x86_64-linux-gnu/libICE.so.6 (0x00007f00580e8000)
	libxkbcommon-x11.so.0 => /lib/x86_64-linux-gnu/libxkbcommon-x11.so.0 (0x00007f00580dd000)
	libxkbcommon.so.0 => /lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f0058099000)
	libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f0057f6f000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f0057f54000)
	libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007f0057ecc000)
	libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f0057e94000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f0057e76000)
	libharfbuzz.so.0 => /lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f0057d72000)
	libicui18n.so.66 => /lib/x86_64-linux-gnu/libicui18n.so.66 (0x00007f0057a73000)
	libicuuc.so.66 => /lib/x86_64-linux-gnu/libicuuc.so.66 (0x00007f005788d000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f0057887000)
	libpcre2-16.so.0 => /lib/x86_64-linux-gnu/libpcre2-16.so.0 (0x00007f0057803000)
	libdouble-conversion.so.3 => /lib/x86_64-linux-gnu/libdouble-conversion.so.3 (0x00007f00577eb000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f0059b1a000)
	libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f00577bd000)
	libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f00577b4000)
	libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f0057763000)
	libxcb-util.so.1 => /lib/x86_64-linux-gnu/libxcb-util.so.1 (0x00007f005755d000)
	libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f0057555000)
	libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f005754d000)
	libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f0057533000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f00574c0000)
	libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f0057408000)
	libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f00573d2000)
	libgraphite2.so.3 => /lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f00573a5000)
	libicudata.so.66 => /lib/x86_64-linux-gnu/libicudata.so.66 (0x00007f00558e4000)
	libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f0055835000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f005582b000)
	liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f0055800000)
	liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f00557df000)
	libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f00556c1000)
	libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f005569e000)

とくに not foundはない。

takurxtakurx

QT_DEBUG_PLUGINS=1を付けてみる

$ QT_DEBUG_PLUGINS=1 python3 example_platcv-1.py 
QFactoryLoader::QFactoryLoader() checking directory path "/home/chino/.local/lib/python3.8/site-packages/cv2/qt/plugins" ...
QFactoryLoader::QFactoryLoader() checking directory path "/home/chino/.local/lib/python3.8/site-packages/PyQt5/Qt5/plugins" ...
QFactoryLoader::QFactoryLoader() checking directory path "/usr/bin" ...
QFactoryLoader::QFactoryLoader() looking at "/usr/bin/2to3-2.7"
QElfParser: '/usr/bin/2to3-2.7' is not an ELF object
"'/usr/bin/2to3-2.7' is not an ELF object" 
         not a plugin
QFactoryLoader::QFactoryLoader() looking at "/usr/bin/411toppm"
"Failed to extract plugin meta data from '/usr/bin/411toppm'" 
         not a plugin
QFactoryLoader::QFactoryLoader() looking at "/usr/bin/["
"Failed to extract plugin meta data from '/usr/bin/['" 
         not a plugin
......
......
    "archreq": 0,
    "className": "QXcbIntegrationPlugin",
    "debug": false,
    "version": 331520
}


Got keys from plugin meta data ("xcb")
QFactoryLoader::QFactoryLoader() checking directory path "/usr/bin/platforms" ...
loaded library "/home/chino/.local/lib/python3.8/site-packages/cv2/qt/plugins/platforms/libqxcb.so"
QObject::moveToThread: Current thread (0x4164240) is not the object's thread (0x44779a0).
Cannot move to target thread (0x4164240)

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/chino/.local/lib/python3.8/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb, eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl.

Aborted (core dumped)

めちゃくちゃ長い
詳細
test install plantcv
https://gist.github.com/takurx/4295784274287b58d7f2b8d2366da388

takurxtakurx

とくにnot foundがなさそう

$ ldd /usr/lib/x86_64-linux-gnu/qt5/plugins/platforms/libqxcb.so | grep "not found"
$
$ ldd /home/chino/.local/lib/python3.8/site-packages/cv2/qt/plugins/platforms/libqxcb.so | grep "not found"
$

別の方法を探す

QtとOpenCVの両方をインストールするとエラーが発生する[Python] | n++
https://blog.nplpl.com/421
ubuntu18.04環境で、pyqt5を使いつつopencv-pythonをインストールすると、その後にqtを使用する際にエラーが発生した。 #PyQt5 - Qiita
https://qiita.com/seigot/items/f379854eb595b932b9e4
OpenCV使用時にQt platform plugin "xcb"エラーで動画が出ない場合 #OpenCV - Qiita
https://qiita.com/Manyan3/items/b1b2c7292ef18becf065

pip uninstall -y opencv-python
pip install opencv-python-headless

動いたー、もう一歩

$ python3 example_platcv-1.py 
Traceback (most recent call last):
  File "example_platcv-1.py", line 18, in <module>
    mask = pcv.roi.filter(mask=bin_img, roi=roi, roi_type="partial")
NameError: name 'bin_img' is not defined

bin_imgはbin_maskなのでは?

results.txtできたー。最後まで動いたー。

$ python3 example_platcv-1.py 
$ ls
bin_img.png  example_platcv-1.py  mask_cutto.png  mask_partial.png  results.txt  rgb_img.png  roi_img.png
takurxtakurx

plantcv v4用 サンプルプログラム

from plantcv import plantcv as pcv
pcv.params.debug = "plot"

# Read in image data (no change)
img, path, filename = pcv.readimage(filename="rgb_img.png")

# Covert to grayscale colorspace (no change)
a = pcv.rgb2gray_lab(rgb_img=img, channel='a')

# Threshold/segment plant from background (removed max_value)
bin_mask = pcv.threshold.binary(gray_img=a, threshold=100, object_type="light")

# Define ROI (reduced outputs)
roi = pcv.roi.rectangle(img=img, x=100, y=100, h=100, w=100)

# Filter binary image to make a clean mask based on ROI 
# (no longer needs `pcv.find_objects` or `pcv.object_composition`)
#mask = pcv.roi.filter(mask=bin_img, roi=roi, roi_type="partial")
mask = pcv.roi.filter(mask=bin_mask, roi=roi, roi_type="partial")

# Extract shape traits from plant
shape_img = pcv.analyze.size(img=img,labeled_mask=mask, n_labels=1)

# Save out data to file
pcv.outputs.save_results(filename="results.txt", outformat="json")

このスクラップは2024/02/20にクローズされました