前提・実現したいこと
画像セグメンテーションで、画像を出力したいのですができません。
https://docs.opencv.org/master/d3/db4/tutorial_py_watershed.htmlの一番最後にある二つの画像を出力したいです。
発生している問題・エラーメッセージ
Traceback (most recent call last):
File "color.py3", line 39, in <module>
cv.imshow('marks',markers)
cv2.error: OpenCV(4.4.0-dev) /export/ruby/GIT/OpenCV/opencv/modules/highgui/src/precomp.hpp:137: error: (-215:Assertion failed) src_depth != CV_16F && src_depth != CV_32S in function 'convertToShow'
該当のソースコード
python
1import numpy as np 2import os 3import sys 4vnum = str(sys.version_info[0]) + "." + str(sys.version_info[1]) 5UsrLocalLibPath = '/usr/local/lib/python' + vnum + '/dist-packages' 6if not os.path.exists( UsrLocalLibPath + "/cv2" ) == True: 7 print("user local lib path for cv2 does not exist: " + UsrLocalLibPath) 8 exit(-1) 9sys.path.append(os.path.join(os.path.dirname(__file__), UsrLocalLibPath)) 10import cv2 as cv 11from matplotlib import pyplot as plt 12img = cv.imread('coins.png') 13gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY) 14ret, thresh = cv.threshold(gray,0,255,cv.THRESH_BINARY_INV+cv.THRESH_OTSU) 15 16# noise removal 17kernel = np.ones((3,3),np.uint8) 18opening = cv.morphologyEx(thresh,cv.MORPH_OPEN,kernel, iterations = 2) 19# sure background area 20sure_bg = cv.dilate(opening,kernel,iterations=3) 21# Finding sure foreground area 22dist_transform = cv.distanceTransform(opening,cv.DIST_L2,5) 23ret, sure_fg = cv.threshold(dist_transform,0.7*dist_transform.max(),255,0) 24# Finding unknown region 25sure_fg = np.uint8(sure_fg) 26unknown = cv.subtract(sure_bg,sure_fg) 27 28# Marker labelling 29ret, markers = cv.connectedComponents(sure_fg) 30# Add one to all labels so that sure background is not 0, but 1 31markers = markers+1 32# Now, mark the region of unknown with zero 33markers[unknown==255] = 0 34 35markers = cv.watershed(img,markers) 36img[markers == -1] = [255,0,0] 37 38cv.imshow('marks',markers) 39cv.waitKey(0) 40cv.destroyAllWindows()
試したこと
imshowで画像を表示する部分のプログラムがうまくいかないのですが、エラーを見て調べてもなにが原因か分かりません。教えていただけると嬉しいです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー