我想问一下如何使用非 void 函数作为函数来运行线程。
我的意思是,这样的功能:
void example(Mat& in, Mat& out)
我如何将此函数用于线程beginthreadx
?
粘贴我要在多线程代码中转换的代码:
#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <stdio.h>
#include <windows.h>
#include <process.h>
using namespace std;
using namespace cv;
//filling array
void acquisisci (Mat in[]){
in[0]=imread("C:/OPENCV/Test/imgtest/bird1.jpg",1);
in[1]=imread("C:/OPENCV/Test/imgtest/bird2.jpg",1);
in[2]=imread("C:/OPENCV/Test/imgtest/bird3.jpg",1);
in[3]=imread("C:/OPENCV/Test/imgtest/pig1.jpg",1);
in[4]=imread("C:/OPENCV/Test/imgtest/pig2.jpg",1);
in[5]=imread("C:/OPENCV/Test/imgtest/pig3.jpg",1);
}
//grey function
void elabora (Mat& in, Mat& out){
if (in.channels()==3){
cvtColor(in,out,CV_BGR2GRAY); //passa al grigio
}
}
//threshold function
void sogliata(Mat& in, Mat& out){
threshold(in,out,128,255,THRESH_BINARY);//fa la soglia
}
//view
void view (Mat& o){
imshow("Immagine",o);
waitKey(600);
}
int main(){
Mat in[6],ou[6],out[6];
acquisisci(in);
for (int i=0;i<=5;i++){
elabora(in[i],ou[i]);
}
for (int i=0;i<=5;i++){
sogliata(ou[i],out[i]);
}
for (int i=0;i<=5;i++){
view(out[i]);
}
return 0;
}
我可以用并行线程做到这一点吗?