U.B*_*A.R 7 c++ opencv picturebox winforms
我正在使用OpenCV从网络摄像头中获取实时流并在检测到面部后.我正在调整它们的大小,以便只显示我的脸.
但问题是我在C++ Windows窗体中做了所有这些,我希望它显示在一个PictureBox而不是在OpenCV imshow()窗口中显示.
我正在使用cv::Mat所以我在图片框中显示有很多问题.
我试过把它转换成IplImage但是也没用.此外,我尝试了谷歌,但我无法得到一个有效的解决方案.我已经尝试了3天了.
这是我显示的代码:
face = getFace(frame);
cv::imshow("window",face);
Run Code Online (Sandbox Code Playgroud)
其中,frame和face是cv::Mat
这是一个C++ CLR函数,可以在任何Windows窗体控件上绘制OpenCV垫:
void DrawCVImage(System::Windows::Forms::Control^ control, cv::Mat& colorImage)
{
System::Drawing::Graphics^ graphics = control->CreateGraphics();
System::IntPtr ptr(colorImage.ptr());
System::Drawing::Bitmap^ b = gcnew System::Drawing::Bitmap(colorImage.cols,colorImage.rows,colorImage.step,System::Drawing::Imaging::PixelFormat::Format24bppRgb,ptr);
System::Drawing::RectangleF rect(0,0,control->Width,control->Height);
graphics->DrawImage(b,rect);
delete graphics;
}
Run Code Online (Sandbox Code Playgroud)
此功能只能绘制8位3通道图像.
尝试尝试其他图像类型的位图的像素格式.
| 归档时间: |
|
| 查看次数: |
8823 次 |
| 最近记录: |