我让 openCV 在 Swift 中工作,并且能够使用 findContours()(我设置了一个打印语句并且知道它正在工作)。
我还成功获得了黑白二值图像。
尽管如此,我还是无法弄清楚如何让 drawContour() 工作。这是我的代码:
import UIKit
import opencv2
//import PythonKit
class VC_Silhouette: UIViewController {
@IBOutlet weak var silhouetteFront: UIImageView!
@IBOutlet weak var silhouetteWithContours: UIImageView!
override func loadView() {
// MyViewController.xib からインスタンスを生成し root view に設定する
let nib = UINib(nibName: "VC_Silhouette", bundle: .main)
self.view = nib.instantiate(withOwner: self).first as? UIView
}
override func viewDidLoad() {
super.viewDidLoad()
let image = UIImage(named: "kobe")!
let imgray = Mat()
let hierarchy = Mat()
var contours: [[Point]] = [[]]
self.silhouetteFront.image = image
Imgproc.cvtColor(src: Mat(uiImage: image), dst: imgray, code: ColorConversionCodes.COLOR_BGR2GRAY)
Imgproc.threshold(src: imgray, dst: imgray, thresh: 0, maxval: 255, type: ThresholdTypes.THRESH_BINARY)
self.silhouetteWithContours.image = imgray.toUIImage()
Imgproc.findContours(image: imgray, contours: &contours, hierarchy: hierarchy, mode: RetrievalModes.RETR_EXTERNAL, method: ContourApproximationModes.CHAIN_APPROX_NONE)
Imgproc.drawContours(image: Mat(uiImage: image), contours: contours, contourIdx: -1, color: Scalar(255, 0, 0), thickness: 5)
}
}
这是结果:
这就是我想要实现的----物体周围的红线。
我真的不知道问题出在哪里。任何人,请帮助。提前致谢。