我想在窗口中使用从相机捕获的图像设置感兴趣区域。该怎么做? 我将 C# 与 OpenCVSharp 和 Visual C# 结合使用。
类似的东西:
using (CvCapture cap = CvCapture.FromCamera(0)) // device type + camera index
using (CvWindow v = new CvWindow("Live Stream"))
while (CvWindow.WaitKey(10) < 0)
{
using (IplImage src = cap.QueryFrame())
v.Image = src;
// Then set ROI and send it to picturebox
pictureBox.Image = BitmapConverter.ToBitmap(ROI);
}
最佳答案
我不了解 C#,但这是我在 C++(使用 OpenCV 2)中的做法。希望翻译容易。语句 Mat roiRect = frame(Rect(200,200,100,100));
创建一个 header ,它与 frame
共享数据,但仅在感兴趣的区域。
using namespace cv;
int main(int argc, const char * argv[]) {
VideoCapture cap;
if(argc > 1)
cap.open(string(argv[1]));
else
cap.open(0);
Mat frame;
namedWindow("video", 1);
for(;;) {
cap >> frame;
if(!frame.data)
break;
//Create the region of interest
Mat roiRect = frame(Rect(200,200,100,100));
//Do something with the region of interest
roiRect *= 0.4;
imshow("video", frame);
if(waitKey(30) >= 0)
break;
}
return 0;
}
关于c# - OpenCV 在相机流窗口中设置 ROI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7131949/