我搜索过将IplImage *转换为Mat,但所有答案都是关于转换为cvMat的。
怎么样,我能做到吗? Mat和cvMat有什么区别?
提前致谢
答案 0 :(得分:39)
对于记录:看一下core / src / matrix.cpp,似乎构造函数cv::Mat(IplImage*)
确实已经消失了。
但我找到了另一种选择:
IplImage * ipl = ...;
cv::Mat m = cv::cvarrToMat(ipl); // default additional arguments: don't copy data.
答案 1 :(得分:13)
这是一个很好的解决方案
Mat(const IplImage* img, bool copyData=false);
答案 2 :(得分:11)
答案 3 :(得分:5)
// converts old-style IplImage to the new matrix; the data is not copied by default
Mat(const IplImage* img, bool copyData=false);
答案 4 :(得分:4)
cv :: Mat或Mat,两者都是一样的。
Mat有一个运算符CvMat(),所以简单的赋值工作
将Mat转换为CvMat
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.io.IOException;
public class NamespaceParameterExampleApplication extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws IOException {
final FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("namespace-parameter-example.fxml"));
fxmlLoader.getNamespace()
.put("labelText", "External Text");
final Parent root = fxmlLoader.load();
primaryStage.setTitle("Namespace Parameter Example");
primaryStage.setScene(new Scene(root, 400, 400));
primaryStage.show();
}
}
将CVMat转换为Mat
Mat mat = ---------;
CvMat cvmat = mat;
将Mat转换为IplImage *
<强>&GT;对于单通道
Mat dst = Mat(cvmat, true);
<强>&GT;三通道
IplImage* image = cvCloneImage(&(IplImage)mat);
希望这会对你有所帮助。干杯:)